【发布时间】:2017-05-21 06:42:40
【问题描述】:
我想根据字符串对数据框进行子集化。 我可以使用一个长度的字符串来完成这项工作,但不能使用一个以上(未知)长度的字符串。有什么想法吗?
x <- data.frame(a=1:8, b=rep(c("ant", "bee", "beetle", "dog"),2))
fun <- function(sp){
a <- x[x$b==sp,]
return(a)
}
sp <- "dog"
fun(sp)
a b
4 4 dog
8 8 dog
这行得通。我得到了所有带狗的行。
sp <- c("dog", "ant")
fun(sp)
[1] a b
<0 rows> (or 0-length row.names)
这不起作用。我想要狗和蚂蚁的行,但没有。
解决方案:只需使用 %in% 而不是 ==(感谢 docendo-discimus)
fun <- function(sp){
a <- x[x$b%in%sp,]
a)
}
【问题讨论】:
-
你需要使用
%in%而不是==