【发布时间】:2018-11-22 00:04:06
【问题描述】:
我正在尝试为数据表的列子集构造 rowMeans。如果使用数据框,则代码有效,但不能用作数据表。为什么?
最小的例子——下面的代码不会产生 10x10 的输出:
IDnum <- c(101:110)
Name <- LETTERS[seq( from = 1, to = 10 )]
minExample <- as.data.table(replicate(10,sample(0:5,10,rep=TRUE)))
minExample <- cbind(IDnum, Name, minExample)
grep("V",names(minExample))
#-- Intermediate output omitted
minExample[ , grep("V", names(minExample))]
[1] 3 4 5 6 7 8 9 10 11 12
但这确实会产生正确的 (10x10) 输出:
minExample[ , 3:12]
但是,再次转换为数据框会产生预期的行为:
minExample2 <- as.data.frame(minExample)
grep("V", names(minExample2))
minExample2[ , grep("V",names(minExample2))]
Row V1 V2 V3 V4 V5 V6 V7 V8 V9 V10
1 2 3 5 5 1 3 2 1 3 1
2 4 3 0 1 5 3 0 5 2 3
3 1 2 0 2 2 4 4 0 4 0
4 3 4 5 4 0 0 2 0 0 3
5 2 2 4 4 5 2 1 4 2 2
6 5 3 3 1 1 2 0 5 1 4
7 4 2 2 0 3 1 4 0 5 1
8 0 4 3 2 2 2 2 0 3 5
9 4 3 3 5 4 1 2 0 5 0
10 5 5 0 3 4 4 0 0 1 5
为什么会出现差异?
【问题讨论】:
标签: r data.table subset