str_extract_all returns 一个列表,但我想要一个向量
str_extract_all returns a list but I want a vector
这里对 R 还比较陌生。我有一列推文,我正在尝试创建一个包含转推句柄 "RT @blahblah" 的列,如下所示:
Tweets Retweetfrom
RT @john I had a good day RT @john
RT @josh I had a bad day RT @josh
这是我的代码:
r$Retweetfrom <- str_extract_all(r$Tweets, "^RT[:space:]+@[:graph:]+")
结果不错,但新列不是向量,而是列表。当我尝试取消列出它时,它抛出一个错误:
Error in `$<-.data.frame`(`*tmp*`, "Retweetfrom", value = c("@AlpineITW", "@AllScienceGlobe", : replacement has 1168 rows, data has 2306
有人知道怎么处理吗?非常感谢。
假设在 Tweets
列的每一行中只有一个 RT @user(不是一个非常强的假设),那么您可能只需要 str_extract
(它将对字符串进行矢量化)而不是str_extract_all
(每行可能 return 多个结果)。即
r$Retweetfrom <- str_extract(r$Tweets, "^RT[:space:]+@[:graph:]+")
在这种情况下,您将首先提到 RT @user,这可能是您想要的。
如果我们对 base R
选项感兴趣,sub
会很有用
r$Retweetfrom <- sub(".*\b(RT\s+@[[:graph:]]+)\s+.*",
"\1", r$Tweets)
r$Retweetfrom
#[1] "RT @john" "RT @josh"
这里对 R 还比较陌生。我有一列推文,我正在尝试创建一个包含转推句柄 "RT @blahblah" 的列,如下所示:
Tweets Retweetfrom
RT @john I had a good day RT @john
RT @josh I had a bad day RT @josh
这是我的代码:
r$Retweetfrom <- str_extract_all(r$Tweets, "^RT[:space:]+@[:graph:]+")
结果不错,但新列不是向量,而是列表。当我尝试取消列出它时,它抛出一个错误:
Error in `$<-.data.frame`(`*tmp*`, "Retweetfrom", value = c("@AlpineITW", "@AllScienceGlobe", : replacement has 1168 rows, data has 2306
有人知道怎么处理吗?非常感谢。
假设在 Tweets
列的每一行中只有一个 RT @user(不是一个非常强的假设),那么您可能只需要 str_extract
(它将对字符串进行矢量化)而不是str_extract_all
(每行可能 return 多个结果)。即
r$Retweetfrom <- str_extract(r$Tweets, "^RT[:space:]+@[:graph:]+")
在这种情况下,您将首先提到 RT @user,这可能是您想要的。
如果我们对 base R
选项感兴趣,sub
会很有用
r$Retweetfrom <- sub(".*\b(RT\s+@[[:graph:]]+)\s+.*",
"\1", r$Tweets)
r$Retweetfrom
#[1] "RT @john" "RT @josh"