如何解决排列所有组合的行顺序,同时保留其他
sample<- c("s1","s2","s3","s4")
spines<- c(1,1)
df<- data.frame(sample,spines)
df
sample spines
1 s1 1
2 s2 0
3 s3 0
4 s4 1
我想用行顺序的所有可能组合创建一个新的数据框,但是我希望每个样本都保留变量spine的原始值。 我希望它看起来像这样:
new_df
sample spines
1 s1 1
2 s2 0
3 s3 0
4 s4 1
5 s1 1
6 s2 0
7 s4 1
8 s3 0
9 s1 1
10 s3 0
11 s4 1
12 s2 0
13 s1 1
14 s3 0
15 s2 0
16 s4 1
17 s1 1
18 s4 1
19 s2 0
20 s3 0
21 s1 1
22 s4 1
23 s3 0
24 s2 0
25 s2 0
26 s1 1
27 s3 0
28 s4 1
29 s2 0
30 s1 1
31 s4 1
32 s3 0
我找不到办法。 有什么想法和建议吗?
Dor
解决方法
上述解决问题的一种解决方案(假设您只是在预期输出中为说明目的而用随机数填充了spine
列)
df[c(t(gtools::permutations(4,4))),]
#> sample spines
#> 1 s1 1
#> 2 s2 2
#> 3 s3 3
#> 4 s4 4
#> 1.1 s1 1
#> 2.1 s2 2
#> 4.1 s4 4
#> 3.1 s3 3
#> 1.2 s1 1
#> 3.2 s3 3
#> 2.2 s2 2
#> 4.2 s4 4
#> 1.3 s1 1
#> 3.3 s3 3
#> 4.3 s4 4
#> 2.3 s2 2
#> 1.4 s1 1
#> 4.4 s4 4
#> 2.4 s2 2
#> 3.4 s3 3
#> 1.5 s1 1
#> 4.5 s4 4
#> 3.5 s3 3
#> 2.5 s2 2
#> 2.6 s2 2
#> 1.6 s1 1
#> 3.6 s3 3
#> 4.6 s4 4
#> 2.7 s2 2
#> 1.7 s1 1
#> 4.7 s4 4
#> 3.7 s3 3
#> 2.8 s2 2
#> 3.8 s3 3
#> 1.8 s1 1
#> 4.8 s4 4
#> 2.9 s2 2
#> 3.9 s3 3
#> 4.9 s4 4
#> 1.9 s1 1
#> 2.10 s2 2
#> 4.10 s4 4
#> 1.10 s1 1
#> 3.10 s3 3
#> 2.11 s2 2
#> 4.11 s4 4
#> 3.11 s3 3
#> 1.11 s1 1
#> 3.12 s3 3
#> 1.12 s1 1
#> 2.12 s2 2
#> 4.12 s4 4
#> 3.13 s3 3
#> 1.13 s1 1
#> 4.13 s4 4
#> 2.13 s2 2
#> 3.14 s3 3
#> 2.14 s2 2
#> 1.14 s1 1
#> 4.14 s4 4
#> 3.15 s3 3
#> 2.15 s2 2
#> 4.15 s4 4
#> 1.15 s1 1
#> 3.16 s3 3
#> 4.16 s4 4
#> 1.16 s1 1
#> 2.16 s2 2
#> 3.17 s3 3
#> 4.17 s4 4
#> 2.17 s2 2
#> 1.17 s1 1
#> 4.18 s4 4
#> 1.18 s1 1
#> 2.18 s2 2
#> 3.18 s3 3
#> 4.19 s4 4
#> 1.19 s1 1
#> 3.19 s3 3
#> 2.19 s2 2
#> 4.20 s4 4
#> 2.20 s2 2
#> 1.20 s1 1
#> 3.20 s3 3
#> 4.21 s4 4
#> 2.21 s2 2
#> 3.21 s3 3
#> 1.21 s1 1
#> 4.22 s4 4
#> 3.22 s3 3
#> 1.22 s1 1
#> 2.22 s2 2
#> 4.23 s4 4
#> 3.23 s3 3
#> 2.23 s2 2
#> 1.23 s1 1
,
我想您可以在软件包perms
的{{1}}的帮助下完成此任务
pracma
,
我认为这也会根据您的语言目标为您提供想要的东西:
library(gtools)
sample<- c("s1","s2","s3","s4")
p <- permutations(4,4,sample) # create all the sample permutations
sample <- as.vector(t(p)) # convert sample permutations transpose matrix to a vector
p <- permutations(4,1:4) # create all the spine permutations
spines <- as.vector(t(p)) # convert spines permutations transpose matrix to a vector
df <- data.frame(sample,spines) # create the data frame
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。