我试图找出特定用户发送或提及其他用户的频率。通过twitteR-package,我可以检索给定用户的推文,但是如果推文提到几个用户,则只有第一个在replyToUID字段中提到。因此,我的数据框的第一列包含推文,例如:
“@ user1 @ user2你读过@ user3写的东西吗?”
我想将用户名提取到像这样的列表
来自下一条推文的用户将在下方添加。如果有人知道怎么做(提取,我可以处理循环)它或指向我正确的方向它将是非常理解。
可选地,对于真正有用的,如果您知道如何复合最终的列表(在处理了n个推文之后),而不是
列表(或表格)如下所示(计算某个用户被提及的频率)
它会更加明确。
谢谢你, 利亚
答案 0 :(得分:5)
我不确定有效的Twitter用户名的规则是什么,但假设只允许使用字母数字字符,您可以使用简单的正则表达式执行此操作:
x <- "@user1 @user2 have you read what @user3 wrote?"
users <- function(x){
xx <- strsplit(x, " ")
lapply(xx, function(xx)xx[grepl("@[[:alnum:]]", xx)])
}
users(x)
[[1]]
[1] "@user1" "@user2" "@user3"
此外,该解决方案还假设所有单词都用空格分割,即它不适用于后跟标点符号的用户名。你必须扩展这个答案以应对这种情况。
答案 1 :(得分:2)
你之前发布了这个帖子,但我刚刚在搜索其他问题的答案时遇到过它。
我只是想在“推特实体”上指导您这个说明页面。 https://dev.twitter.com/docs/tweet-entities
有一个“user_mention实体”可以提取推文文本中的所有Twitter用户名,并为您提供一个数组。我认为这应该可以让您访问您想要获得的内容。