gpt4 book ai didi

r - 如何打乱矩阵或数据框中的值,使每个值在每一行/列中只出现一次?

转载 作者:行者123 更新时间:2023-12-04 15:16:29 24 4
gpt4 key购买 nike

如何打乱矩阵或数据框中的值,使每个值在 R 中的每一行/列中只出现一次?

例如,这是我的:

A, A, A, A
B, B, B, B
C, C, C, C
D, D, D, D
E, E, E, E
F, F, F, F
G, G, G, G

我想要的:

A, B, C, D
B, C, D, E
C, D, E, F
D, E, F, G
E, F, G, A
F, G, A, B
G, A, B, C

我要么需要向上/向下移动列并将其换行以保持我的输入,要么通过某种洗牌函数来完成,该函数以一种仍然确保行不重复的方式洗牌。

最佳答案

你可以试试outer + %%来产生循环移位

v <- LETTERS[1:4]
out <- matrix(
v[outer(seq_along(v) - 1, seq_along(v) - 1, `+`) %% length(v) + 1],
nrow = length(v)
)

这样

> out
[,1] [,2] [,3] [,4]
[1,] "A" "B" "C" "D"
[2,] "B" "C" "D" "A"
[3,] "C" "D" "A" "B"
[4,] "D" "A" "B" "C"

更新如果你的矩阵不是正方形,你可以试试下面的代码

v <- LETTERS[1:7]
out <- t(
head(
matrix(
v[outer(seq_along(v) - 1, seq_along(v) - 1, `+`) %% length(v) + 1],
nrow = length(v)
), 4
)
)

给出

> out
[,1] [,2] [,3] [,4]
[1,] "A" "B" "C" "D"
[2,] "B" "C" "D" "E"
[3,] "C" "D" "E" "F"
[4,] "D" "E" "F" "G"
[5,] "E" "F" "G" "A"
[6,] "F" "G" "A" "B"
[7,] "G" "A" "B" "C"

关于r - 如何打乱矩阵或数据框中的值,使每个值在每一行/列中只出现一次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64241668/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com