r-mac和pc之间的不同代码错误/警告



我在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")

这更容易计算(你可以直接添加秒数等(

最新更新