通过索引获取列名无法正常工作

时间:2019-06-19 13:50:54

标签: r syntax data.table

我有一个看起来如下的数据集:

set.seed(1)
TDT <- data.table(Group = c(rep("A",40),rep("B",60)),
                      Id = c(rep(1,20),rep(2,20),rep(3,20),rep(4,20),rep(5,20)),
                      Time = rep(seq(as.Date("2010-01-03"), length=20, by="1 month") - 1,5),
                      norm = round(runif(100)/10,2),
                      x1 = sample(100,100),
                      x2 = round(rnorm(100,0.75,0.3),2),
                      x3 = round(rnorm(100,0.75,0.3),2),
                      x4 = round(rnorm(100,0.75,0.3),2),
                      x5 = round(rnorm(100,0.75,0.3),2))

现在,我要获取所有数字列的列名,如下所示:

xnumcols <- which(sapply(TDT, is.numeric)) # gives  2 4 5 6 7 8 9
xstringnumcols = names(xnumcols)[xnumcols]

由于某种原因,xstringnumcols的输出为[1] "norm" "x2" "x3" "x4" "x5" NA NA。为什么会这样?

2 个答案:

答案 0 :(得分:2)

xstringnumcols = names(xnumcols)[xnumcols]可能不是您想要的,因为您对data.frame列的名称感兴趣。

怎么样:xstringnumcols = colnames(TDT)[xnumcols]

答案 1 :(得分:2)

那是因为您正在设置xnumcols

xnumcols已经是您想要的。

xnumcols
#  Id norm   x1   x2   x3   x4   x5 
#   2    4    5    6    7    8    9 

names(xnumcols)
#[1] "Id"   "norm" "x1"   "x2"   "x3"   "x4"   "x5"