假設(shè)您有一個像這樣的data.frame:x <- data.frame(v1=1:20,v2=1:20,v3=1:20,v4=letters[1:20])您將如何只選擇x中的數(shù)字列?
3 回答

精慕HU
TA貢獻1845條經(jīng)驗 獲得超8個贊
更新為避免使用不明智的sapply。
由于數(shù)據(jù)框是一個列表,因此我們可以使用list-apply函數(shù):
nums <- unlist(lapply(x, is.numeric))
然后是標準子集
x[ , nums]
## don't use sapply, even though it's less code
## nums <- sapply(x, is.numeric)
對于更慣用的現(xiàn)代R,我現(xiàn)在建議
x[ , purrr::map_lgl(x, is.numeric)]
較少的代碼,較少的反映R的特殊問題,并且更直接,更健壯,可以在數(shù)據(jù)庫后端的小標題上使用:
dplyr::select_if(x, is.numeric)

交互式愛情
TA貢獻1712條經(jīng)驗 獲得超3個贊
dplyr包的select_if()函數(shù)是一個優(yōu)雅的解決方案:
library("dplyr")
select_if(x, is.numeric)
- 3 回答
- 0 關(guān)注
- 542 瀏覽
添加回答
舉報
0/150
提交
取消