【问题标题】:R - Loop over several filesR - 循环几个文件
【发布时间】:2019-05-30 18:50:20
【问题描述】:

我想将此代码应用于多个数据框 (df) 列表。

df1<- lapply(df1, function(x) {
  x$Date <- as.Date((x$Date), format="%Y-%m-%d")
  x})

数据框列表称为df1df2df3df4abc1abc2abc3abc4。日期列总是在同一个地方。

我尝试这样做以完成df1-4,但它不起作用。

for (i in 1:4) {
  df[i] <- lapply(df[i], function(x) {
  x$Date <- as.Date((x$Date), format="%Y-%m-%d")
  x})}

我还考虑将所有文件名放入一个列表并循环使用:

df_list = c("df1","df2", "df3", "df4", "abc1", "abc2", "abc3", "abc4")

但我没有成功。我想保留文件的原始名称。有什么建议吗?

【问题讨论】:

  • df1 是 data.frame 还是 data.frames 列表?您能否提供一个数据示例?
  • 都是数据框列表
  • @DSGym:它是一个数据帧列表!

标签: r list loops dataframe


【解决方案1】:
for(i in 1:length(df_list)) {
  df_list[[i]] <- lapply(df_list[[i]], function(x) {
    x$Date <- as.Date((x$Date), format="%Y-%m-%d")
    x})
}

这对你有用吗?

对我来说确实如此:

class(df_list[[1]][[1]]$Date)
[1] "Date"

您的错误似乎是因为您使用了[] 而不是[[]]。您必须使用双括号来引用 data.frame。

【讨论】:

  • 这将返回新列表。我认为 OP 希望修改现有变量(即就地修改)。
  • 谢谢,但我收到一条错误消息:x$date 中的错误:$ 运算符对原子向量无效
  • 可能是因为您的变量是 Date 而不是 date。无论如何,这似乎有点棘手。
  • 你能提供一些示例数据吗?
猜你喜欢
  • 2023-02-21
  • 2017-01-17
  • 1970-01-01
  • 2019-06-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-05
相关资源
最近更新 更多