r - 如何修改多个数据框而不创建它们的列表然后使用 lapply?

标签 r list dataframe lapply

我有 20 个数据框,在每个数据框中我想以相同的方式格式化同一列。当然,我可以创建 dfs 的 list,然后使用 lapply。相反,我的目标是修改 dfs,以便最终我不必将它们作为列表元素而是作为 dfs 来访问。这是一个例子:

df1 <- data.frame(col1 = rnorm(5), col2 = rnorm(5))
df2 <- data.frame(col1 = rnorm(5), col2 = rnorm(5))

现在,假设我想为 df1df2col1 的每个值加 1。当然,我可以做到

df_list <- lapply(list(df1, df2), function(df) {
  df$col1 <- df$col1 + 1
  return(df)
})

但是现在df1返回原始的df而不是修改后的df。怎么做?

最佳答案

基于OP代码的一个选项是在命名list元素后使用list2env

names(df_list) <- paste0("df", 1:2)
list2env(df_list, envir = .GlobalEnv)

如果我们需要避免创建列表(建议有一个列表数据集,而不是在全局环境中创建单独的对象),那么使用使用for循环分配

for(obj in paste0('df', 1:2)) {
     assign(obj, `[<-`(get(obj), 'col1', value = get(obj)[['col1']] +1))
 }

关于r - 如何修改多个数据框而不创建它们的列表然后使用 lapply?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46097161/

相关文章:

c++ - 更新元素 STL 列表列表

python - 用 Pandas 替换数据框中不同列的值

python - 使用 pandas 将数据框导出到 python 中的 csv 文件

python - 获取 bool 数组,指示数组中哪些元素属于列表

Java访问列表中的第一个列表

python - 如何检查一行中的所有列是否都是正数?

r - R中的长矢量图/覆盖图

r - 如何使用glue_sql()并避免粘贴动态SELECT语句?

html - 使用CSS隐藏rhandsontable中的列

r - 使用 purrr 映射按列对迭代汇总