在基础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的命令进行过滤,但是使用行范围加载该条件要比使用条件更快,并且添加多个条件意味着我有时会等待一天的数据加载。
您可以使用任何一种方式进行子设置。
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
mtcars[intersect(1:5, which(mtcars$cyl==6)),]
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句