r - R data.table 过滤列名称有空格
问题描述
我有一个数据表。其中一列称为“高分”。我知道我们总是可以重命名该列。但是,如果我们必须对列名使用引号,有没有办法根据列对数据进行子集化?实际上,我需要为此类列的列表执行此操作
我已经使用 iris 表制作了以下示例:
library(data.table)
dt <- as.data.table(iris)
# rename to make the variable with space
setnames(dt, c("Sepal.Length", "Sepal.Width", "Petal.Length", "Petal.Width", "Species"),
c("Sepal Length", "Sepal Width", "Petal Length", "Petal Width", "Species"))
seg_name <- c("Sepal Length", "Sepal Width", "Petal Length", "Petal Width")
然后我想根据每一列创建一些子集。但是所有这些列都带有空格或特殊字符
for (i in 1:length(seg_name)){
# here is the problem !!!
tmp <- dt[seg_name[i] > 6]
fwrite(tmp, paste0('./output/', seg_name[i], '.txt'), row.names = F, sep = "\t")
}
解决方案
不能使用in段访问column
名称。相反,您可以选择使用.variable/character
i
data.table
get
可以这样写for-loop
:
for (i in 1:length(seg_name)){
tmp <- dt[get(seg_name[i]) > 6]
fwrite(tmp, paste0('./output/', seg_name[i], '.txt'), row.names = F, sep = "\t")
}
推荐阅读
- java - 根据用户输入以 ASCII 艺术风格绘制心形
- scenekit - 在scenekit中对象到其他对象的投影轮廓
- photoshop - Photoshop:打开时将 jpeg 转换为 16 位的脚本
- jenkins - 詹金斯管道切割日志
- python - 使用python pandas过滤/迭代列中的每个项目
- typescript - 有什么方法可以过滤{}不放额外的地图吗?
- python - 欧米茄在连续过松弛率法中的意义是什么?
- python - 带有 fit_transfrom 或预测对象而不是拟合对象的 sklearn 管道
- java - 为什么我不能向数组添加元素?
- django - Django的分页