如何使用字符串访问数据框并修改数据框?
How can I access a data frame using string and modify the data frame?
得到了数据框列表,比如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
}
}
我从 this post 那里了解到,我们不能为 R 中的 get() 函数的结果赋值。
我也试过了
assign(df[[col]], 0)
但这也行不通。 assign()
函数只是给name赋值,但是这里的df[[col]]
不是name,而是column。
我该如何解决这个问题?
您可以获取列表中的数据框并使用 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)
得到了数据框列表,比如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
}
}
我从 this post 那里了解到,我们不能为 R 中的 get() 函数的结果赋值。
我也试过了
assign(df[[col]], 0)
但这也行不通。 assign()
函数只是给name赋值,但是这里的df[[col]]
不是name,而是column。
我该如何解决这个问题?
您可以获取列表中的数据框并使用 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)