如何模仿Microsoft Excel';s R中的“文本到列”功能将多个字符串中分隔符符号的变量数拆分为多个列?

如何模仿Microsoft Excel';s R中的“文本到列”功能将多个字符串中分隔符符号的变量数拆分为多个列?,r,R,作为对本论坛中几个问题的扩展,类似于,并且由于本论坛中已经提供的建议中没有一个能够为我提供我正在寻找的解决方案,我将发布此问题 我想将包含可被视为分隔符的符号的可变编号的可变长度字符串列表拆分为数据帧,如下例所示。有什么建议吗 x = c(NA, "a/b", "a/b/c/d", "a/b/c","a/c","a/b/c/d/e") df <- data.frame(x1 = c("a","a","a","a","a"), x2 = c("b","

作为对本论坛中几个问题的扩展,类似于,并且由于本论坛中已经提供的建议中没有一个能够为我提供我正在寻找的解决方案,我将发布此问题

我想将包含可被视为分隔符的符号的可变编号的可变长度字符串列表拆分为数据帧,如下例所示。有什么建议吗

x = c(NA, "a/b", "a/b/c/d", "a/b/c","a/c","a/b/c/d/e")

df <-  data.frame(x1 = c("a","a","a","a","a"),
                  x2 = c("b","b","b","c","b"),
                  x3 = c(NA,"c","c",NA,"c"),
                  x4 = c(NA,"d",NA,NA,"d"),
                  x5 = c(NA,NA,NA,NA,"e"))
x=c(不适用,“a/b”、“a/b/c/d”、“a/b/c”、“a/c”、“a/b/c/d/e”)

df我们可以使用
read.table
from
base R
paste
之后,将字符串插入一个由
\n
分隔的字符串中

read.table(text = paste(x[-1], collapse="\n"), 
   header = FALSE, stringsAsFactors = FALSE, sep="/", fill = TRUE, na.strings = "")
#  V1 V2   V3   V4   V5
#1  a  b <NA> <NA> <NA>
#2  a  b    c    d <NA>
#3  a  b    c <NA> <NA>
#4  a  c <NA> <NA> <NA>
#5  a  b    c    d    e

我知道答案已经存在,但我想提供一个通用方法。IMHO当前的答案并不能解决一个涉及删除
NA
并将列名设置为x1、x2。。。正如问题所暗示的那样

#示例数据
x=c(不适用,“a/b”、“a/b/c/d”、“a/b/c”、“a/c”、“a/b/c/d/e”)
df_q%
purrr::keep(~all(!is.na())%%>%
purrr::映射(函数(y){
res=数据帧(矩阵(y,nrow=1),stringsAsFactors=FALSE)
colnames(res)=glue::glue(“x{1:length(y)}”)
物件
}) %>% 
dplyr::绑定_行()%>%
purrr::映射(作为因子)%>%
as.data.frame()
#试验
相同(df_a,df_q)
#>[1]是的

由(v0.2.1)于2019-06-02创建

非常接近实际情况,答案是有效的。如果你把
x
放在data.frame中,
df@ronak-shah,这是一个非常快速实用的回答,可以立即解决我的问题。请您提供此解决方案作为答案,以便我可以接受它作为我的查询的解决方案?它与我在上面发布的链接的答案相同,因此此链接应作为该链接的副本关闭。因为,我不确定,一开始我重新打开它,现在我无法关闭它。会等待其他人来关闭它:)
library(data.table)
fread(paste(x[-1], collapse="\n"), sep="/", header = FALSE, fill = TRUE)