是否有可能基于行范围和r中的逻辑条件对data.frame进行子集化?

约翰·克莱格

在基础r中,我可以基于行范围对data.frame进行子集化:

mtcars[1:5,]

或者我可以基于逻辑条件进行子集化:

mtcars[mtcars$cyl==6,]

但我似乎无法同时做到:

mtcars[1:5 & mtcars$cyl==6,]

警告消息:在1:5&mtcars $ cyl == 6中:较长的对象长度不是较短的对象长度的倍数

还有另一种方法吗?

用例使用LaF软件包加载了一个庞大的.csv,它允许使用类似于base r的命令进行过滤,但是使用行范围加载该条件要比使用条件更快,并且添加多个条件意味着我有时会等待一天的数据加载。

罗纳克·沙

您可以使用任何一种方式进行子设置。

  1. 基于逻辑向量:
mtcars[seq(nrow(mtcars)) %in% 1:5 & mtcars$cyl==6,]

#                mpg cyl disp  hp drat    wt  qsec vs am gear carb
#Mazda RX4      21.0   6  160 110 3.90 2.620 16.46  0  1    4    4
#Mazda RX4 Wag  21.0   6  160 110 3.90 2.875 17.02  0  1    4    4
#Hornet 4 Drive 21.4   6  258 110 3.08 3.215 19.44  1  0    3    1
  1. 根据行范围:
mtcars[intersect(1:5, which(mtcars$cyl==6)),]

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章