tmp1 <- data.frame(x = 10, y = NA, z = NA)
实际值:
> tmp1[ ,!is.na(tmp1)]
[1] 10
所需:
> tmp1[ ,!is.na(tmp1)]
x
1 10
Pfft,为什么?
> tmp1[-c(2:3)]
x
1 10
grumblegrumblegrumble
> tmp1[ ,-c(2:3)]
[1] 10
我确信R正在按照我的要求行事,但它并没有完全符合我的要求:)
答案 0 :(得分:3)
当您只询问data.frame的一列时,R
会为您提供一个原子向量,除非您指定要将结果保存为data.frame:
tmp1[,-(2:3),drop=F]
另外值得注意的是:
2:3
已经是一个向量,因此您不需要c(2:3)
,但您需要-(2:3)
来分发负号。tmp1[-c(2:3)]
有点令人困惑,因为data.frames也是列表。这意味着删除列表tmp1
的第二项和第三项,即列。我会避免这种表示法,但这取决于你。