如何使用字符串访问数据框并修改数据框?

问题描述

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

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

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

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

我从this post获悉,我们无法为R中的get()函数的结果赋值。

我也尝试过

assign(df[[col]],0)

但这也不起作用。 assign()函数仅为名称分配一个值,但是这里df[[col]]不是名称,而是一列。

我该如何解决

解决方法

您可以在列表中获取数据框并使用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)