首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R:知道一个列表中有多少个向量,其中包含一个值

R:知道一个列表中有多少个向量,其中包含一个值
EN

Stack Overflow用户
提问于 2016-10-13 14:06:16
回答 2查看 47关注 0票数 0

我得到了一个名为list_of_sentences的单词向量列表。

代码语言:javascript
复制
s1=sample(letters,size = 5,replace = FALSE)
s2=sample(letters,size = 7,replace = FALSE)
s3=sample(letters,size = 3,replace = FALSE)
list_of_sentences=list(s1,s2,s3)

假设,我想知道有多少句子包含了"a“这个词。你怎么做到的,我知道我有一张由6000字组成的5万句句子的清单。基本上,我正在寻找% in函数中%的“向量化”版本,以便运行以下内容:

代码语言:javascript
复制
vectorized_match_fun("a",list_of_sentences)
TRUE FALSE TRUE FALSE FALSE FALSE FALSE ...
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-10-13 14:14:02

可以在应用函数中运行%in%

代码语言:javascript
复制
set.seed(13)
s1=sample(letters,size = 5,replace = FALSE)
s2=sample(letters,size = 7,replace = FALSE)
s3=sample(letters,size = 3,replace = FALSE)
list_of_sentences=list(s1,s2,s3)

vapply(list_of_sentences,
       function(x, find) any(find %in% x),
       "a",
       FUN.VALUE = logical(1))

基于您对另一个答案的评论,我将指出%in%在双方都接受向量。我提供的答案允许您利用这一点,但仍然只返回一个逻辑,指示是否找到匹配项。但是,我不能100%确定这是您想要的,因为您还没有提供如何处理多个单词搜索的示例输出。

但考虑一下

代码语言:javascript
复制
vapply(list_of_sentences,
           function(x, find) any(find %in% x),
           find = c("a", "x"),
           FUN.VALUE = logical(1))
票数 2
EN

Stack Overflow用户

发布于 2016-10-13 14:11:15

您可以使用:

代码语言:javascript
复制
vectorized_match_fun <- function(list_input, matched_word){
    unlist(lapply(list_input,function(x){
        matched_word %in% x
    }))
}

vectorized_match_fun(list_of_sentences,"a")
[1] FALSE  TRUE FALSE

vectorized_match_fun(list_of_sentences,"x")
[1] FALSE FALSE  TRUE
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40023303

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档