检查字符串是否包含在R数据框中的列表列的每个向量中

时间:2018-08-22 18:32:14

标签: r dplyr

对不起,标题冗长-我保证,当您查看下面的示例时,标题将很清楚。我有以下简短的数据框:

dput(mydf)
structure(list(retweet_count = c(186L, 140L, 205L, 30L, 74L, 
190L, 27L), hashtags = list("Potato", "Runner", "Money", c("Cheese", 
"Potato", "Hammer", "Blue", "Runner", "Fighter"), c("Trust", 
"Believe"), "YouCanDoIt", c("Potato", "OneFamily"))), row.names = c(NA, 
-7L), class = c("tbl_df", "tbl", "data.frame"))

# A tibble: 7 x 2
 retweet_count hashtags 
          <int> <list>   
1           186 <chr [1]>
2           140 <chr [1]>
3           205 <chr [1]>
4            30 <chr [6]>
5            74 <chr [2]>
6           190 <chr [1]>
7            27 <chr [2]>

zed视图显示以下内容:

enter image description here

您会看到 mydf 中的 hashtags 列属于列表类型,并且每一行都是字符串向量。我想返回此数据框的过滤后的版本,仅保留其中包含“土豆”的行(第1、4和7行)。我已经尝试过了:

# whoops had this backwards - fixed now
mydf %>% dplyr::filter("Potato" %in% hashtags)

但是这不起作用。对此的任何帮助都是超级感谢,因为我必须在代码中的几个地方进行此操作。

1 个答案:

答案 0 :(得分:3)

DBCPService dbcpService = context.getProperty(DB_CONNECTION_POOL).asControllerService(DBCPService.class); Connection con = dbcpService.getConnection(); 不检查嵌套成员资格;您需要遍历该列并创建一个布尔向量进行过滤:

%in%

或为mydf %>% filter(sapply(hashtags, function(v) 'Potato' %in% v)) # A tibble: 3 x 2 # retweet_count hashtags # <int> <list> #1 186 <chr [1]> #2 30 <chr [6]> #3 27 <chr [2]> 使用purrr::map_lgl

sapply