我有一個簡單的R data.frame
對象df
。我試圖根據df
中列col
的邏輯索引從此數據框中選擇行。
我來自蟒蛇世界,在類似的操作中,我可以選擇使用df[df[col] == 1]
或df[df.col == 1]
來選擇最終結果。
然而,在R數據幀相比df[df[,col] == 1]
(由summary
命令確認)df[df$col == 1]
給出一個不正確的結果。我無法理解這種差異,因爲像http://adv-r.had.co.nz/Subsetting.html這樣的鏈接似乎無論哪種方式都可以。另外,df$col
和df[, col]
上的str
命令顯示相同的輸出。
是否有關於何時使用的指導$
vs []
運營商?
編輯: 挖得更深一些,並使用該question作爲參考,它看起來像下面的代碼工作正常
df[which(df$col == 1), ]
然而,尚不清楚如何防範NA
以及何時使用which
根據你的例子,我有點想知道你是否對'[''和'[['列表(包括數據框)'之間的區別有點困惑?因爲使用單個和雙個大括號具有不同的結果。 (請參見右邊鏈接的最高級相關問題。) – joran
感謝編輯問題 – goofd
如果您對使用data.table包感興趣,可以非常容易地基於邏輯條件對行進行子集劃分。請參閱https://cran.r-project.org/web/packages/data.table/vignettes/datatable-intro.html –