R根据模式拆分列
我用str_extract_all()得到了一长串向量 标题(列表)输出如下:R根据模式拆分列,r,R,我用str_extract_all()得到了一长串向量 标题(列表)输出如下: [1] "ARGENTINA" [[2]] [1] "BUENOS " "AIRES" "BUENOS " "AIRES" "ARGENTINA" [[3]] [1] "ARGENTINA" "ARGENTINA" [[4]] [1] "ARGENTINA" "ARGENTINA" [[5]] [1] "ARGENTINA" [[6]] [1] "ARGENTINA" 现在,我想将
[1] "ARGENTINA"
[[2]]
[1] "BUENOS " "AIRES" "BUENOS " "AIRES" "ARGENTINA"
[[3]]
[1] "ARGENTINA" "ARGENTINA"
[[4]]
[1] "ARGENTINA" "ARGENTINA"
[[5]]
[1] "ARGENTINA"
[[6]]
[1] "ARGENTINA"
现在,我想将输出移动到excel,使每个元素在同一行中占据不同的列。例如:
p1 p2 p3 p4 p5
ARGENTINA NA NA NA NA
BUENOS AIRES BUENOS AIRES ARGENTINA
ARGENTINA ARGENTINA ARGENTINA NA NA
但我在尝试执行此操作时出现以下错误:
数据帧错误(“阿根廷”,c(“布宜诺斯艾利斯”,“布宜诺斯艾利斯”,
“AIRES”,:参数表示不同的行数:1、5、2、3,
6,4,0,9,8,7,38
任何帮助都将不胜感激。由于
列表
元素的长度不同,我们可能需要在rbind
之前的末尾添加NA
,因为结果来自stru extract\u all
,只需使用simplify=T
参数,它将返回一个矩阵而不是列表.
矩阵将由空字符串组成,而不是NA
。您可以替换它们,然后将其转换为数据帧
mat <- str_extract_all(your_string, pattern, simplify = TRUE)
mat[mat == ""] <- NA_character_
df <- as.data.frame(mat)
mat
library(stringi)
stri_list2matrix(lst, byrow=TRUE)
lst <- list("ARGENTINA", c("BUENOS ", "AIRES", "BUENOS ", "AIRES",
"ARGENTINA"
), c("ARGENTINA", "ARGENTINA"), c("ARGENTINA", "ARGENTINA"),
"ARGENTINA", "ARGENTINA")
mat <- str_extract_all(your_string, pattern, simplify = TRUE)
mat[mat == ""] <- NA_character_
df <- as.data.frame(mat)