r - 在R中按名称简单循环列
问题描述
我正在尝试遍历我的 df 中的列,但它给出了null
值:
for (i in names(train_num)){
print(train_num$i)
}
我认为这是因为i
是一个string
,所以train$"column_name"
是行不通的。我该如何改变呢?或者也许有其他选择?
PS:我需要按名称循环它们并按名称调用循环中的变量,因为我将对给定一组条件的每个变量进行转换。
解决方案
正如 Wen 的评论所指出的,您可以使用方括号来设置子集,它接受列名作为字符串。但是,如果您尝试遍历列,则仅遍历列更有意义。数据框是列的列表,因此根本不需要使用names()
和子集。
最后,无论您尝试进行何种转换,都可能通过不同的方法(例如_apply
orpurrr::map_
函数或dplyr::mutate_all
.
df <- head(airquality)
for (i in names(df)){
print(df[, i])
}
#> [1] 41 36 12 18 NA 28
#> [1] 190 118 149 313 NA NA
#> [1] 7.4 8.0 12.6 11.5 14.3 14.9
#> [1] 67 72 74 62 56 66
#> [1] 5 5 5 5 5 5
#> [1] 1 2 3 4 5 6
for (col in df){
print(col)
}
#> [1] 41 36 12 18 NA 28
#> [1] 190 118 149 313 NA NA
#> [1] 7.4 8.0 12.6 11.5 14.3 14.9
#> [1] 67 72 74 62 56 66
#> [1] 5 5 5 5 5 5
#> [1] 1 2 3 4 5 6
由reprex 包(v0.2.0) 于 2018 年 5 月 8 日创建。
推荐阅读
- node.js - 如何捆绑环境依赖包?
- matplotlib - 记录互动情节
- regex - Atom.io 搜索字段中的正则表达式
- javascript - Napi::ObjectWrap: 是一个析构函数,如何调用?
- python - 如何将一个 numpy 元组数组解压缩到一个 ndarray 中?
- php - 为什么扩展在命令行上可用,但在 nginx 提供的脚本中不可用?
- apostrophe-cms - 在 Apostrophe CMS 中,我可以访问与上一个和下一个呈现的小部件相关的小部件订单索引吗?
- javascript - 如何让 Flipclock 从特定日期自动设置时间
- java - 如何在 O(h) 时间内找到中位数?
- python - Scrapy:ascii'编解码器无法编码字符