我遇到了以下问题。
我有几个向量,例如:
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>