将数据帧中的一个值转化为r中的一个向量,或者得到向量的组合,而不结合它们的元素



我遇到了以下问题。

我有几个向量,例如:

v1 <- c("a","b","c")

v2 <- c("d","e","f")

v3 <- c("g","h")

我想要向量的组合,但不是向量的元素的组合。例如,我想要一个像这样的日期框架:

Target-Data-Frame

我定义了一个超向量,并将向量v1-v3的名称保存为字符串:
supervector <- c("v1","v2","v3")

,并使用安排包中的命令组合来创建v1-v3的所有可能组合:


require(arrangements)
combs <- combinations(x=c(NA,supervector),k=length(supervector),freq = c((length(supervector)-1),rep(1,length(supervector))))

我收到了以下数据帧:

超向量

的组合图如果我现在能把向量的名字转换回来,我就完成了。所以不是v1 = "a","每个单元格有a b c

目标是将数据帧中的值转换回转置的向量。

如果你有其他的想法,比如我有向量的组合,而不需要向量元素的排列,那么我非常感谢这个建议。我们的目标只是在图片上有一个这样的数据帧。

基于combs数据的一个可能的解决方案如下:

combs %>% 
as.data.frame %>%  
mutate(V1 = mgsub::mgsub(V1, c("v1", "v2", "v3"), c("a, b, c", "d, e, f", "g, h")), 
V2 = mgsub::mgsub(V2, c("v1", "v2", "v3"), c("a, b, c", "d, e, f", "g, h")), 
V3 = mgsub::mgsub(V3, c("v1", "v2", "v3"), c("a, b, c", "d, e, f", "g, h"))) %>% 
splitstackshape::cSplit(., names(.))

V1_1 V1_2 V1_3 V2_1 V2_2 V2_3 V3_1 V3_2 V3_3
1: <NA> <NA> <NA> <NA> <NA> <NA>    a    b    c
2: <NA> <NA> <NA> <NA> <NA> <NA>    d    e    f
3: <NA> <NA> <NA> <NA> <NA> <NA>    g    h <NA>
4: <NA> <NA> <NA>    a    b    c    d    e    f
5: <NA> <NA> <NA>    a    b    c    g    h <NA>
6: <NA> <NA> <NA>    d    e    f    g    h <NA>
7:    a    b    c    d    e    f    g    h <NA>

最新更新