我已经花了几个小时来解决基于向量中搜索模式来设置数据帧行的问题。我是R的新手。也许很简单,但我自己做不到,而且我在stackoverflow中找不到解决方案
假设我有一个来自R的mtcars数据。
我想用一些汽车名称对行进行子集化,例如仅马自达,福特和雪佛兰。所以我有一个字符向量car.names和我想子集的汽车名称:
car.names <- c("Mazda", "Ford", "Chevrolet")
问题是:如何根据car.names中的条件对mtcars行进行子集化?
alexwhan的答案也是我也将解决此问题的方式,但我想我会分享此答案,以防对他人有所帮助:您可以考虑使用Vectorize
创建一个“向量化”版本grep
:
vGrep <- Vectorize(grep, vectorize.args="pattern")
输出如下所示:
vGrep(car.names, rownames(mtcars))
# $Mazda
# [1] 1 2
#
# $Ford
# [1] 29
#
# $Chevrolet
# integer(0)
您可以unlist
在输出中使用这些值作为您的子集的一部分data.frame
:
mtcars[unlist(vGrep(car.names, rownames(mtcars))), ]
# 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
# Ford Pantera L 15.8 8 351 264 4.22 3.170 14.50 0 1 5 4
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句