str_extract_all 返回一个列表,但我想要一个向量

Lay*_*ang 5 r stringr

对于 R 来说还是比较新的。我有一列推文,我正在尝试创建一个包含转发句柄“RT @blahblah”的列,如下所示:

Tweets                            Retweetfrom
RT @john I had a good day         RT @john
RT @josh I had a bad day          RT @josh
Run Code Online (Sandbox Code Playgroud)

这是我的代码:

r$Retweetfrom <- str_extract_all(r$Tweets, "^RT[:space:]+@[:graph:]+")
Run Code Online (Sandbox Code Playgroud)

它给了我正确的结果,但新列不是向量,而是列表。当我尝试取消列出它时,它会抛出一个错误:

Error in `$<-.data.frame`(`*tmp*`, "Retweetfrom", value = c("@AlpineITW", "@AllScienceGlobe",  : replacement has 1168 rows, data has 2306
Run Code Online (Sandbox Code Playgroud)

有人知道如何处理这个问题吗?多谢。

Jon*_*oll 3

假设该列的每一行中只有一个 RT @user Tweets(不是一个非常强的假设),那么您可能只想str_extract(这将在字符串上进行矢量化)而不是str_extract_all(这可能每行返回多个结果)。IE

r$Retweetfrom <- str_extract(r$Tweets, "^RT[:space:]+@[:graph:]+")
Run Code Online (Sandbox Code Playgroud)

在这种情况下,您将第一次提到 RT @user,这可能就是您想要的。

  • 很确定你可以只执行“simplify = T”,它会将结果转换为可变大小的矩阵。 (3认同)