我在 4004c9: c7 45 fc 2a 00 00 00 movl $0x2a,-0x4(%rbp)
4004d0: 8b 45 fc mov -0x4(%rbp),%eax
4004d3: 89 c7 mov %eax,%edi
4004d5: b8 00 00 00 00 mov $0x0,%eax
中有一个data.table
,其中包含200个带整数值的列。
其中一列被命名为group,它有100个不同的可能值。
因此,当我使用:R
进行子集时,例如,如果我这样做,subDT<-DT[group==N]
,则总和的值可能为0.
所以我要做的是显示sum(subDT$columnX)
,但只显示subDT
的列,例如sum(subDT$columnN)!=0
,保持列的名称完整无缺。
修改
使用mtcars数据的一个例子是:
subDT[group==0,.(columns where sum(column)>0)]
假设我们想要将mtcars子集化并获取carb为1的行,但仅当子集的总和小于10时才显示列:
DT<-as.data.table(mtcars)
在这种情况下,将显示的列仅为vs,am和carb,因为这些列的总和小于10
答案 0 :(得分:1)
假设在过滤器之后取总和:
DT[group == N, !(sapply(DT[group == N],sum) == 0), with = FALSE]
使用setkey可以更快地完成:
setkey(DT,group)
DT[N, !(sapply(DT[N],sum) == 0), with = FALSE]