我正在尝试在R中创建一个hashtag提取函数。这个函数将从一个帖子中提取一个hashtags,如果有的话,否则会给出一个空白。我的功能就像
hashtag_extract= function(text){
match = str_extract_all(text,"#\\S+")
if (match) {
return match
}else{
return ''}}
String="#letsdoit #Tonewbeginnign world is on a new#route
但我的功能不起作用,显示出大量的错误。比如第一个错误是
Error: unexpected symbol in:
" if (match) {
return match"
所以我想将其应用为
hashatag_extract(string)
并且答案应该像
一样#letsdoit ##Tonewbeginnign #route
最终我将使用sapply在整列上应用此函数,这就是If部分很重要的原因。请忽略我对R的缩进,因为它对R不重要,但每个建议都会有所帮助
答案 0 :(得分:11)
str_extract_all()
正在回归你的想法stringi
{/ 1}}功能构建于这应该处理大多数(如果不是全部)情况:
stringr
如果你需要将每组主题标签与每个输入向量分组,你需要调整该函数,但是你真的没有详细说明你真正想要完成的事情。
答案 1 :(得分:1)
@manu sharma我会说你不需要在里面申请。让不匹配的行取值为' NA'。应用该功能后,将其更改为空白。 希望我的代码可以帮助您:
aaa <- readLines("C:\\MY_FOLDER\\NOI\\file2sample.txt")
ttt <- function(x){
r <- sapply(x, function(x) { matches <- str_match(x,"#\\w+\\s+")})
r
}
y <-ttt(aaa)
y[is.na(y)]=''
答案 2 :(得分:0)
感谢所有人的帮助,我得到了它的工作方式,认为它与Shalini的答案几乎相似 1.替换消息上的所有NAs
int n = new Random().Next(5, 10);
2.提取Hashtags的功能
message[is.na(message)]='abc'
hashtag_extrac= function(text){
match = str_extract_all(text,"#\\S+")
if (match!= "") {
match
} else {
'' }}