【发布时间】:2018-07-14 05:07:30
【问题描述】:
我有一个 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")
}
【问题讨论】:
-
使用
dt[`Sepal Length` > 3],不要覆盖subset,它是一个基础R函数 -
感谢您的回复。但是如果我想把它放在一个循环中,该怎么做呢?
-
@Gavin
cust_seg_all是什么? -
对不起,我更新了。
标签: r data.table