2017-08-30 13 views
0

這似乎是which()功能是有點多餘,因爲你已經可以子集這樣的data.frame:何時使用哪個()?

data1[data1$foo>0,] 

不使用which()

是什麼時候它必要子集與which()

+2

有時候該指數的值是很重要的位置。例如,您希望在某個事件之前*之後的*行。在這種情況下,使用'which'可以很方便,因爲您可以添加或減少1,甚至可以同時執行以獲取周圍的行。請參閱[本文](https://stackoverflow.com/questions/45961021/data-table-cutoff-row-after-duplicate)第二個示例。 – lmo

+1

基本上:每當你需要知道邏輯向量的哪些元素是真的。 –

+0

你完全正確:「哪個」很少是必要的或有用的。有一些例外,但比許多人意識到的要少得多。 –

回答

2

的差異出現時,有NA值:

dd <- data.frame(a = c(-1, NA, 1), b = 2) 
ok <- dd$a > 0 

dd[which(ok),] 
## a b 
## 3 1 2 

dd[ok, ] 
##  a b 
## NA NA NA 
## 3 1 2 
0

data1[data1$foo>0,]這給回你的布爾值:

T F T F

另外,推薦子集,subset(data1,foo>0)當你有NA


data1[which(data1$foo>0),]回饋的T

1,3

+1

我不認爲這是回答這個問題。 –

相關問題