r - R:更改循环内的对象
问题描述
a <- data.frame(x = c(1, 2))
b <- data.frame(x = c(3, 4))
for (df in list(a, b)) {
print(df)
df$y <- c(5, 6)
}
每个数据框都被正确打印出来,但添加一个额外的列失败。
广泛的网络搜索建议像
lapply(list(a, b), function(df){
df$y <- c(5, 6)
})
但这对我没有帮助。
我也很感兴趣的是,为什么for
循环中的打印语句有效,但添加y
列失败。
这让我很惊讶。
解决方案
df
您必须使用该附加列返回's。尝试:
lapply(list(a, b), function(df){
df$y <- c(5, 6); return(df)
})
输出是:
[[1]]
x y
1 1 5
2 2 6
[[2]]
x y
1 3 5
2 4 6
正如@dash2 假设您可能希望将那些更改df
的 ' 分配给您list
的 of df
。所以完整的代码可能如下所示:
a <- data.frame(x = c(1, 2))
b <- data.frame(x = c(3, 4))
l <- list(a, b)
l <- lapply(l, function(df){ df$y <- c(5, 6); return(df) })
推荐阅读
- angularjs - 无法悬停在 Highcharts 平行坐标图中的每条线上
- elasticsearch - ElasticSearch:如何处理驼峰式和小写式查询
- python-3.6 - 如何纠正openpyxl(Python)中的“已删除记录”错误?
- wordpress - 如何在 WooCommerce 中的一处更新所有产品的价格?
- sql - Oracle SQL 逐行更新表
- php - 根据zend中的条件显示选择框
- javascript - __lookupGetter__ VS getOwnPropertyDescriptor 检索一个getter
- angular - 在 ionic 3 中发布,无法发布
- retrofit - 如何使用改造 2 在 Android 中获取 Json,如下面的代码所示?
- .htaccess - .htaccess 使用动态获取参数重定向