【问题标题】:How to create a loop to "uncount" all dataframes in environment in R?如何创建一个循环以“计数”R中环境中的所有数据帧?
【发布时间】:2020-11-13 05:27:08
【问题描述】:

我有一个很长的导入数据框列表,我使用以下方法导入:

temp = list.files(pattern="*.csv")
myfiles = lapply(temp, read.delim)

我生成的数据面板如下所示: All dataframes use same naming convention and data structure

如何创建一个 for 循环,将列名应用于所有这些,然后使用 tidyr uncount? 对于单个数据框,我会使用:

names(df) <- c("EVI", "Frequency", "Transition")
df_Tidy <- tidyr::uncount(df, Frequency)

如何将前面的代码块应用于我的全局环境中的所有数据框?

【问题讨论】:

  • 你所有的data.frames是否仍然存储在myfiles中?如果他们不是,他们应该是。那么它就像map-ing 或lapply-ing 在您的列表中一样简单 - lapply(myfiles, function(x) tidyr::uncount(x, Frequency) ) 或类似的东西。
  • @thelatemail,我在提交过程中犯了一个错误。我已经编辑了我的帖子。
  • 我会重新使用myfiles 列表。与尝试使用 assign get 和命名约定等相比,它会使处理许多数据集(如您想要做很多事情)更容易。
  • @thelatemail,我会这样做的。问题是我完全是初学者,我不熟悉这种格式。完成此操作后,当我运行 Ronak 的代码时,我得到: Names(x)
  • 您的 myfiles 中的某些内容看起来不是具有 3 列的 data.framelengths(myfiles) 是否为每个列表项返回 3?

标签: r dataframe for-loop


【解决方案1】:

你可以使用lapply/map

new_files <- lapply(myfiles, function(x) {
  names(x) <- c("EVI", "Frequency", "Transition")
  tidyr::uncount(x, Frequency)
})

【讨论】:

    猜你喜欢
    • 2022-08-06
    • 2019-04-26
    • 2020-05-25
    • 2021-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-22
    相关资源
    最近更新 更多