【问题标题】:extracting data with unknown length character string in R [duplicate]在R中提取具有未知长度字符串的数据[重复]
【发布时间】: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%而不是==

标签: r string function subset


【解决方案1】:

在您的函数中,您必须将逻辑运算符 == 更改为 %in% 才能与向量进行比较。

fun <- function(sp){
  a <- x[x$b %in% sp,] 
  return(a)
}

sp <- "dog"
fun(sp)
# a   b
# 4 4 dog
# 8 8 dog
sp <- c("dog", "ant")
fun(sp)
# a   b
# 1 1 ant
# 4 4 dog
# 5 5 ant
# 8 8 dog

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-01-23
    • 1970-01-01
    • 1970-01-01
    • 2014-07-26
    • 2019-09-02
    • 2017-02-17
    • 1970-01-01
    相关资源
    最近更新 更多