将多个列转换为大型列表中的 "Date"

Convert multiple columns to "Date" in a large list

我正在处理存储在列表中的大型数据集。该列表包含 450 个数据帧。每个数据框看起来都一样(相同的列名)但具有不同的值: 这是一个数据框的示例:

structure(list(Date = structure(1:10, .Label = c("01.01.2009 00:00:00", 
"01.01.2009 01:00:00", "01.01.2009 02:00:00", "01.01.2009 03:00:00", 
"01.01.2009 04:00:00", "01.01.2009 05:00:00", "01.01.2009 06:00:00", 
"01.01.2009 07:00:00", "01.01.2009 08:00:00", "01.01.2009 09:00:00"
), class = "factor"), SWC = c(NaN, NaN, NaN, NaN, NaN, NaN, NaN, 
NaN, NaN, NaN)), row.names = c(NA, 10L), class = "data.frame")

我想将列表中每个数据帧的 "Date" 列转换为 as.Date() 日期。因此,我创建了一个 for 循环:

for (i in length(list.data.SM)) {

list.data.SM[[i]] <- as.Date(list.data.SM[[i]]$Date, format = "%d.%m.%Y %H:%M:%S")
}

之后我想通过以下方式从列表中的第一个数据帧中提取数据子集:

subset2009 <- subset(list.data.SM[[1]], Date <= "2009-12-31 23:00:00")

子集现在 returns“$ operator is invalid for atomic vectors”我真的很困惑,因为代码中没有 $。此外,我意识到在我的 for 循环之后 "list.data.SM" 变成了一个值并且不再在全局环境中显示为数据。

提前感谢您的帮助。

问题的解决方案是在 for 循环中使用 seq_along。所以我写道:

for (i in seq_along(list.data.SM)) {

  list.data.SM[[i]]$Date <- as.Date(list.data.SM[[i]]$Date, format = "%d.%m.%Y %H:%M:%S")
}