2014-01-09 22 views
1
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爲做什麼我問,但它沒有這樣做正是我想要的:)

回答

3

當你問的只有一個列的數據框架,R爲您提供了一個原子矢量,除非您指定要保留結果作爲data.frame:

tmp1[,-(2:3),drop=F] 

同樣值得注意:

  • 2:3已經是一個矢量,所以你不需要c(2:3),但你需要-(2:3)分發負號。
  • tmp1[-c(2:3)]有點混亂,因爲data.frames也是列表。這意味着刪除列表tmp1列表中的第二項和第三項,即列。我會避免這種表示法,但這取決於你。
+0

我應該看看'?'[''not'?data.frame' ...我的錯誤 – rawr