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"
UPDATE把導致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"
這對pul對每個表達進有沒有辦法將輸出放入現有數據框的新變量中? – dhrice
它不會在'data.frame'中工作,因爲您將在列中添加不同數量的變量。例如,如果您在「at」列中添加「johnsmith」「joesmith」,那麼您在「hash」列中的相同行中添加了什麼?它會在'list'中工作。我會更新我的答案。 –
我最初的想法是分開做。理想情況下,我希望代碼使用@符號搜索第一個模式的文本,並將其放入一個變量中,然後再次搜索另一個並將其放入第二個變量中,依此類推。對於少於其他行的行,請輸入NA或其他內容。 如果失敗了,我認爲你的代碼會讓我成爲那裏的一部分,並且我可以做其他事情。 – dhrice