首页 > 解决方案 > 如何使用字符串访问数据框并修改数据框?

问题描述

我得到了一个数据框列表,例如c(df01,df02,df03).

每个数据框有三列,c("A", "B", "C").

我想编写一个for循环来修改每个数据帧的每一列。我试过了:

for (df in c("df01", "df02", "df03")) {
   for (col in c("A", "B", "C")) {
      get(df)[[col]] <- 0
   }
}

我从这篇文章中了解到,我们无法为 R 中的 get() 函数的结果赋值。

我也试过

assign(df[[col]], 0)

但这也行不通。该assign()函数只为一个名称赋值,但这里df[[col]]不是名称,而是列。

我怎样才能解决这个问题?

标签: rstringdataframeassign

解决方案


您可以在列表中获取数据框并用于lapply更改列

df_vec <- c("df01","df02","df03")
col_vec <- c("A","B","C")
result <- lapply(mget(df_vec), function(x) {x[col_vec] <- 0;x})

为了使这些更改反映在原始数据框中,请使用list2env

list2env(result, .GlobalEnv)

推荐阅读