r - 如何使用字符串访问数据框并修改数据框?
问题描述
我得到了一个数据框列表,例如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]]
不是名称,而是列。
我怎样才能解决这个问题?
解决方案
您可以在列表中获取数据框并用于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)
推荐阅读
- vue.js - 观看从父母到孩子的道具变化
- javascript - SVG 动画(ICO 到 SVG 文件)
- django-models - 如何在 Django 中设计有向图模型?
- react-native - 字体大小在反应原生的不同设备中缩小(不响应)
- elasticsearch - 如何使用 elasticsearch 获取嵌套字段的所有值?
- arrays - Vue 在两个 for 循环中调用 Api
- ios - 在消息过滤器扩展中使用钥匙串
- contiki - Contiki os 中的 RSSI
- typescript - NestJS 装饰器 - 上下文未定义
- angular-material - 为角材料拖放定义自定义边界