[英]R match expression multiple times in the same line
我正在R中处理一组Tweets(我知道是非常原始的),并希望在每个@符号和每个#之后提取文本,并将它们放入单独的变量中。 例如:
这是使用#twitter的测试推文。 @johnsmith @joesmith。
理想情况下,我希望它在具有twitter johnsmith joesmith等的数据框中创建新变量。
当前我正在使用data $ at <-str_match(data $ tweet_text,“ \\ s @ \\ w +”)data $ hash <-str_match(data $ tweet_text,“ \\ s#\\ w +”)
显然,这使我第一次出现在新变量中。 有什么建议么?
strsplit
和grep
将起作用:
x <-strsplit("This is a test tweet using #twitter. @johnsmith @joesmith."," ")
grep("#|@",unlist(x), value=TRUE)
#[1] "#twitter." "@johnsmith" "@joesmith."
如果只想保留单词,则不要使用#,@或。:
out <-grep("#|@",unlist(x), value=TRUE)
gsub("#|@|\\.","",out)
[1] "twitter" "johnsmith" "joesmith"
更新将结果放在list
:
my_list <-NULL
x <-strsplit("This is a test tweet using #twitter. @johnsmith @joesmith."," ")
my_list$hash <-c(my_list$hash,gsub("#|@|\\.","",grep("#",unlist(x), value=TRUE)))
my_list$at <-c(my_list$at,gsub("#|@|\\.","",grep("@",unlist(x), value=TRUE)))
x <-strsplit("2nd tweet using #second. @jillsmith @joansmith."," ")
my_list$hash <-c(my_list$hash,gsub("#|@|\\.","",grep("#",unlist(x), value=TRUE)))
my_list$at <-c(my_list$at,gsub("#|@|\\.","",grep("@",unlist(x), value=TRUE)))
my_list
$hash
[1] "twitter" "second"
$at
[1] "johnsmith" "joesmith" "jillsmith" "joansmith"
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.