我在R studio中运行一些分析代码,在Mac上我遇到了一个错误,无法继续,但当我在PC上运行相同的代码时,我只收到一个警告,然后可以继续分析。
convert.dates <- function(data, columns, format="%Y-%m-%d %H:%M:%S") {
if (length(columns) == 1) {
posdates <- data.frame(strptime(data[, columns], format))
names(posdates) <- columns
} else
posdates <- as.data.frame(apply(data[, columns], 2, strptime, format))
data <- data[, -match(columns, names(data))]
data.frame(data, posdates)
}
recdat$datetime <- as.character(strptime(recdat$datetime, "%Y:%m:%d %H:%M:%S"))
recdat <- convert.dates(recdat, "datetime")
Mac错误代码:strptime错误(数据[,列],格式(:输入字符串太长
PC警告:行名是从一个短变量中找到的,已丢弃
为什么这些可能不同?我如何最终避免收到错误?
`structure(list(placeID = c("SHPP9", "SHPP9", "MAPP4", "MAPP4",
"MAPP4", "MAPP4", "HAPP15", "HAPP15", "HAPP15", "DEPP2"), fileID = c("IMG_0086_grid_compass.JPG",
"IMG_0089_grid_compass.JPG", "IMG_0146_grid_compass.JPG", "IMG_0149_grid_compass.JPG",
"IMG_0152_grid_compass.JPG", "IMG_0155_grid_compass.JPG", "IMG_2671_grid_compass.JPG",
"IMG_2673_grid_compass.JPG", "IMG_2676_grid_compass.JPG", "IMG_0008_grid_compass.JPG"
), datetime = c("2019:06:01 02:59:22", "2019:06:01 02:59:23",
"2019:06:06 00:45:32", "2019:06:06 00:45:33", "2019:06:06 00:45:49",
"2019:06:06 00:45:50", "2019:06:07 23:05:46", "2019:06:07 23:05:47",
"2019:06:07 23:05:48", "2019:06:10 22:29:47"), time = c(0.782634725415124,
0.78270744746729, 31.6146031824166, 31.6146759044688, 31.6158394573035,
31.6159121793556, 43.7456595925075, 43.7457323145597, 43.7458050366119,
62.438208603419), species = c("Civet", "Civet", "Civet", "Civet",
"Civet", "Civet", "Civet", "Civet", "Civet", "Civet"), absangle = c(0.233516621633944,
0.22839855680029, 0.0168248958289925, 0.112940296923411, 0.00228507404113898,
0.0993839863232428, 0.221094165650959, 0.180608750801481, 0.12502377891255,
0.269755048548634), distance = c(6.25093914350113, 5.90579526441211,
3.35416246724451, 3.5986715069128, 3.74569894202013, 3.2687423704556,
8.63358410851277, 9.12459363127179, 9.03891669576689, 3.70247933884298
)), row.names = c(NA, -10L), class = c("tbl_df", "tbl", "data.frame"
))`
目前尚不清楚是哪些值导致了问题,而您发布的值则没有。试着先看看table(nchar(recdat$datetime))
之类的东西,找出任何奇数。
FWIW少数注释:您可以简单地就地转换列,例如:
convert.dates <- function(data, columns, format="%Y-%m-%d %H:%M:%S") {
for (col in columns) data[[col]] <- strptime(data[[col]], format)
data
}
而且处理POSIXlt
的效率很低,所以我会用代替上面的所有内容
recdat$datetime <- as.POSIXct(recdat$datetime, "%Y:%m:%d %H:%M:%S")
这更容易计算(你可以直接添加秒数等(