r - 在R中的循环内创建新的数据框列到全局环境中
问题描述
所以我是否试图获得一个具有两个不同列的除法值的新列。我正在尝试对多个 dfs 执行此操作。我知道循环在没有分配函数的情况下工作,但不幸的是它没有将它保存在全局环境中。
vect
是具有多个数据框的向量
for (i in vect) {
i$new <- i[,2] / i[,3]
print(i)
}
我正在寻找一种以可行的方式重写它的方法:
assign(i$new, i[,2] / i[,3],envir = .GlobalEnv)
解决方案
您可以使用 lapply 将新列 cbind 到列表中的每个数据框中。
dfs <- list(df1 <- data.frame(x = c(1,2,3,4,5),
y = c(2,3,4,5,6)),
df2 <- data.frame(x = c(5,6,7,8,9),
y = c(1,3,4,5,6)))
dfs <- lapply(dfs, function(d){
new <- d$x/d$y
cbind(d, new)} )
dfs
> dfs
[[1]]
x y new
1 1 2 0.5000000
2 2 3 0.6666667
3 3 4 0.7500000
4 4 5 0.8000000
5 5 6 0.8333333
[[2]]
x y new
1 5 1 5.00
2 6 3 2.00
3 7 4 1.75
4 8 5 1.60
5 9 6 1.50
推荐阅读
- javascript - Discord JS - 从 sqlite 检索信息并存储在数组中
- php - Laravel whereIn 不能正确使用 whereHas
- exasolution - 如何在 exasol 数据库中启用JsonFunctions=1?
- optimization - 为什么这个答案不起作用,只针对一个测试用例?
- javascript - 输入'地图
| undefined' 不能分配给类型 '{ [key: string]: Pod[]; }' - reactjs - ReactJS:如何在 ReactJS 中接收来自外部应用程序的发布请求?
- java - 如何使用 Hilt 在 Android 中实现 View/Presenter;错误:匕首/依赖循环
- python - 多 CPU、GPU 上的 Python 多处理
- php - Yajra 数据表和 materializecss 响应式下拉菜单
- javascript - 将数据添加到完整日历中的资源和头部部分