【发布时间】:2019-07-29 03:02:10
【问题描述】:
在 R 中,我试图读取具有时间戳的文件,并根据另一个字段的条件更新时间戳。下面的代码没有问题:
t <- data.frame(user = as.character(c("bshelton@email1.com", "lwong@email1.com")),
last_update = rep(as.POSIXlt(Sys.time(), tz = "America/Los_Angeles"), 2))
Sys.sleep(5)
t$last_update <- as.POSIXlt(ifelse(t$user == "bshelton@email1.com", Sys.time(), t$last_update), origin = "1970-01-01")
print(t)
问题是当我读取现有文件并尝试动态更改 as.POSIXlt 值时。以下代码产生了随后代码块中伴随的错误:
t <- data.frame(user = as.character(c("bshelton@email1.com", "lwong2@email1.com")),
last_update = rep(as.POSIXlt(Sys.time(), tz = "America/Los_Angeles"), 2))
write.csv(t, "so_question.csv", row.names = FALSE)
t <- read.csv("so_question.csv")
t$last_update <- as.POSIXlt(t$last_update)
Sys.sleep(5)
t$last_update <- as.POSIXlt(ifelse(t$user == "bshelton@email1.com", Sys.time(), t$last_update), origin = "1970-01-01")
Error in as.POSIXlt.default(ifelse(t$user == "bshelton@email1.com", Sys.time(), :
do not know how to convert 'ifelse(t$user == "bshelton@email1.com", Sys.time(), t$last_update)' to class “POSIXlt”
In addition: Warning message:
In ans[!test & ok] <- rep(no, length.out = length(ans))[!test & :
number of items to replace is not a multiple of replacement length
【问题讨论】:
标签: r if-statement timestamp