繁体   English   中英

R在同一行中多次匹配表达式

[英]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 +”)

显然,这使我第一次出现在新变量中。 有什么建议么?

strsplitgrep将起作用:

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM