我正在使用R中的Twitter数据集,但发现很难从推文中删除用户名。

这是我的数据集的tweet列中的tweet的示例:

[1] "@danimottale: 2 bad our inalienable rights offend their sensitivities. U cannot reason with obtuse zealotry. // So very well said."
[2] "@FreeMktMonkey @drleegross Want to build HSA throughout lifetime for when older thus need HDHP not to deplete it if ill before 65y/o.thanks"

我想删除/替换所有以“@”开头的单词,以获得以下输出:
[1] "2 bad our inalienable rights offend their sensitivities. U cannot reason with obtuse zealotry. // So very well said."
[2] "Want to build HSA throughout lifetime for when older thus need HDHP not to deplete it if ill before 65y/o.thanks"

此gsub函数仅用于删除“@”符号。
gsub("@", "", tweetdata$tweets)

我想说的是,删除文本符号后面的字符,直到遇到空格或标点符号为止。

我开始尝试只处理空间,但无济于事:
gsub("@.*[:space:]$", "", tweetdata$tweets)

这将完全删除第二条推文
gsub("@.*[:blank:]$", "", tweetdata$tweets)

这不会改变输出。

感谢您的帮助。

最佳答案

您可以使用以下内容。 \S+匹配任何非空格字符(1或多次),然后匹配单个空格字符。

gsub('@\\S+\\s', '', noRT$text)

Working Demo

编辑:否定的匹配也可以正常工作(仅使用空格字符)
gsub('@[^ ]+ ', '', noRT$text)

10-04 17:40