为了账号安全,请及时绑定邮箱和手机立即绑定

从数据框中仅选择数字列

从数据框中仅选择数字列

天涯尽头无女友 2019-12-09 15:41:27
假设您有一个像这样的data.frame:x <- data.frame(v1=1:20,v2=1:20,v3=1:20,v4=letters[1:20])您将如何只选择x中的数字列?
查看完整描述

3 回答

?
精慕HU

TA贡献1845条经验 获得超8个赞

更新为避免使用不明智的sapply。


由于数据框是一个列表,因此我们可以使用list-apply函数:


nums <- unlist(lapply(x, is.numeric))  

然后是标准子集


x[ , nums]


## don't use sapply, even though it's less code

## nums <- sapply(x, is.numeric)

对于更惯用的现代R,我现在建议


x[ , purrr::map_lgl(x, is.numeric)]

较少的代码,较少的反映R的特殊问题,并且更直接,更健壮,可以在数据库后端的小标题上使用:


dplyr::select_if(x, is.numeric)


查看完整回答
反对 回复 2019-12-09
?
交互式爱情

TA贡献1712条经验 获得超3个赞

dplyr包的select_if()函数是一个优雅的解决方案:


library("dplyr")

select_if(x, is.numeric)


查看完整回答
反对 回复 2019-12-09
  • 3 回答
  • 0 关注
  • 467 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信