我使用str_extract_all()获得了很长的向量列表。
head(list)输出如下:
[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
但是在尝试执行此操作时出现以下错误:
data.frame(“ARGENTINA”,c(“BUENOS”,“AIRES”,“BUENOS”, “AIRES”,:参数意味着不同的行数:1,5,2,3, 6,4,0,9,8,7,38,
任何帮助将不胜感激。
答案 0 :(得分:1)
由于结果来自str_extract_all
,只需使用simplify = T
参数,该参数将返回矩阵而不是列表。
矩阵由空字符串组成,而不是NA
。您可以替换它们,然后将其转换为数据帧。
mat <- str_extract_all(your_string, pattern, simplify = TRUE)
mat[mat == ""] <- NA_character_
df <- as.data.frame(mat)
您现在可以重命名列名称
答案 1 :(得分:0)
由于list
元素的长度不同,我们可能需要在NA
之前填充rbind
,方法是length<-
最大length
list
lst <- lapply(lst, trimws)
d1 <- as.data.frame(do.call(rbind, lapply(lst, `length<-`,
max(lengths(lst)))), stringsAsFactors=FALSE)
names(d1) <- paste0("p", seq_along(d1))
中的元素。
stri_list2matrix
如果我们使用的是套餐,stringi
<{1}}是library(stringi)
stri_list2matrix(lst, byrow=TRUE)
lst <- list("ARGENTINA", c("BUENOS ", "AIRES", "BUENOS ", "AIRES",
"ARGENTINA"
), c("ARGENTINA", "ARGENTINA"), c("ARGENTINA", "ARGENTINA"),
"ARGENTINA", "ARGENTINA")
uDAO = (UserDAO) dao;