在rtweet的数据框中的字段上使用str_match

时间:2016-12-05 18:35:47

标签: r string-matching

我尝试使用str_match中的stringr,它适用于一个简单的测试示例。但它不适用于从rtweet返回的数据:

这是一个似乎可以解决的虚构数据框架:

test <- data.frame(c(1), c('something'))
names(test) <- c('value', 'item')

subset(test, !anyNA(str_match(item,'thing')))

这会给出匹配并且不会过滤掉项目,生成:

  value      item
1     1 something

将其更改为其他内容:

subset(test, !anyNA(str_match(item,'thang')))

...按预期过滤项目:

[1] value item 
<0 rows> (or 0-length row.names)

但是从rtweet返回的数据框中的“mentions_screen_name”字段似乎不能像这样进行子集化。其他逻辑操作(如mentions_screen_name == ...)可用于选择列。但是!anyNA(str_match(mentions_screen_name, '...'))将无效,即使您匹配该字段的确切文本。

我想发送似乎无法选择的数据 str_match。但获取数据的脚本使用的是rtweet和 需要Twitter应用程序凭据。

虽然像我说的那样简单的例子。 rtweet数据有什么不同吗?

1 个答案:

答案 0 :(得分:1)

提及,主题标签等的数据结构当前是通过将每个推文的值折叠为由逗号分隔的单个字符串而创建的字符向量。 rtweet的下一个版本将包含一些实用程序函数,以便更轻松地处理此结构。在此期间,您可以将提及转换为列表对象:

strsplit(mentions, ",")

或者使用像grep / grepl这样的函数来搜索字符串中的匹配项。

我不完全确定这会回答你的问题,所以如果我误解你,我很抱歉。