R 按索引获取列名无法正常工作

R 按索引获取列名无法正常工作,r,syntax,data.table,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") -

我有一个如下所示的数据集:

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]
set.seed(1)

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


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


如何:
xstringnumcols=colnames(TDT)[xnumcols]

这是因为您正在对
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" 

这是因为您正在子集
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" 

这就是您想要做的:
名称(筛选器(Is.numeric,TDT))
?谢谢,它是。。那我就用这个。但是我的代码不应该工作吗?我真的认为它有点太“复杂”。可能会将其改写为:
names(sappy(TDT,is.numeric))
这就是您要执行的操作:
names(Filter(is.numeric,TDT))
?谢谢,它是。。那我就用这个。但是我的代码不应该工作吗?我真的认为它有点太“复杂”。可以这样重写:
names(sappy(TDT,is.numeric))