【发布时间】:2016-03-21 02:35:36
【问题描述】:
在 data.table 中,根据列号的数字向量对表进行子集化的一种方法是使用 with=FALSE。
我正在尝试根据列号的数字向量循环遍历 data.table,寻找满足特定条件的 行,如下所示:
require(data.table)
ab=data.table(id=c("geneA", "geneB", "geneC", "geneA", "geneA", "geneB", "", "NA"),
co1=c(1,2,3,0,7), co2=c(0,0,4,5,6), nontarget=c(9,0,7,6,5),
co3=c(0,1,2,3,4))
target_col_nums=grep('co', colnames(ab))
##Data.table doesn't treat colnames(ab)[i] as one of the
## column name variables, and with=F only seems to work for j in dt[i,j,by]
for (i in target_col_nums){
print(ab[colnames(ab)[i]>3])
}
##This produces the desired output
ab[co1>3]
ab[co2>3]
ab[co3>3]
在我的情况下,我的实际表很大,所以我不能自己使用列名。
我希望这是一个对社区有用的问题。
【问题讨论】:
-
您知道您的示例数据会产生警告吗?
-
"我的实际表非常大,所以我不能自己使用列名。"这对我来说没有意义。如果您的列名没有意义,请继续使用矩阵,否则,我认为它们属于字符串/字符向量,而不是被数字引用。在此处查看 1.1,了解为什么通常建议这样做 rawgit.com/wiki/Rdatatable/data.table/vignettes/…
标签: r data.table