R:按分隔符拆分字符串向量并重新排列

R:按分隔符拆分字符串向量并重新排列,r,stringi,R,Stringi,我有一个字符串向量,需要以某种方式在矩阵中拆分和重新排列。我知道如何进行拆分/简单的重新排列,但我不知道如何按我想要的方式重新排列: library(stringi) vec = c("b;a;c","a;c","c;b") q = stri_split_fixed(vec, ";", simplify = TRUE,fill=T) View(q) V1 V2 V3 b a c a c c b 期望输出 V1 V2 V3 a b c a

我有一个字符串向量,需要以某种方式在矩阵中拆分和重新排列。我知道如何进行拆分/简单的重新排列,但我不知道如何按我想要的方式重新排列:

library(stringi)

vec = c("b;a;c","a;c","c;b")
q = stri_split_fixed(vec, ";", simplify = TRUE,fill=T)
View(q)

V1  V2  V3
b   a   c
a   c    
c   b    
期望输出

V1  V2  V3
a   b   c
a       c 
    b   c 
谢谢大家!! 编辑:

上面的字母是为了简单。实物期权包括(并非详尽的列表):
D-Amazon Marketplace
U-Amazon
D-Amazon
U-Jet
,等等。但仅以
U
D
开头


订单-按字母顺序排列,但按零售商分组。如果太复杂-没有顺序是可以的

此解决方案生成一个布尔矩阵,每个向量作为行,每个可能的字符作为列

possible_options = c('a', 'b', 'c')
result <- sapply(possible_options, function(x) apply(q, 1, function(y) x %in% y))
result
         a     b    c
[1,]  TRUE  TRUE TRUE
[2,]  TRUE FALSE TRUE
[3,] FALSE  TRUE TRUE

你能一直假设第一行包含所有的因子/字母吗?不,任意长度你知道总共有多少个选项吗?或者,顺序是重要的还是只需要将同一列中相同的字符分组?我想您需要一个更完整的示例,如果第一行是
b,a,c,uud
,会发生什么情况?
d
是否移过去?我先按摩数据,这样就可以有字母字符了
result <- sapply(c(letters, LETTERS), function(x) apply(q, 1, function(y) x %in% y))
result <- result[, colSums(result) > 0]
result
         a     b    c
[1,]  TRUE  TRUE TRUE
[2,]  TRUE FALSE TRUE
[3,] FALSE  TRUE TRUE
opts <- as.character(unique(unlist(q)))
opts <- opts[sort.list(opts[opts != ''])]
result <- sapply(opts , function(x) apply(q, 1, function(y) x %in% y))
result
         a     b    c
[1,]  TRUE  TRUE TRUE
[2,]  TRUE FALSE TRUE
[3,] FALSE  TRUE TRUE