【发布时间】:2018-04-28 05:06:51
【问题描述】:
我想在 R 中的字符向量中随机选择元素。
例如, 我有包含 36 个字母的字符向量。
f <- c('A', 'B', 'C', 'D', 'E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','a','b','c','d','f','g','h','i','j','k')
我想在这个字符向量中进行随机抽样。 我想做的结果如下所示。
[,1] [,2] [,3]
[1,] "a" "B" "C"
[2,] "D" "E" "F"
[3,] "H" "I" "J"
[4,] "K" "L" "M"
...
[12,] "Z" "c" "m"
关键是我想随机选择字母而不替换,并使用选择的字母制作像上面一样的矩阵
i <- 1
a <- matrix(0,12,3)
for(i in 1:12){
a_temp <- sample(f,3)
while(any(a_temp==a)){
idx <- which(f %in% a_temp)
f <- f[-idx]
a_temp <- sample(f,3)
}
a[i,] <- a_temp
i+1
}
> a
[,1] [,2] [,3]
[1,] "D" "A" "G"
[2,] "S" "f" "W"
[3,] "M" "Q" "O"
[4,] "M" "D" "U"
[5,] "K" "C" "F"
[6,] "E" "O" "b"
[7,] "h" "V" "c"
[8,] "N" "j" "k"
[9,] "j" "a" "R"
[10,] "B" "H" "f"
[11,] "L" "i" "A"
[12,] "E" "R" "X"
但是,我只能得到包含重复字母的矩阵。
(我的意思是我想让所有的字母都有平等的机会被选择只有一次)
【问题讨论】:
-
为了将来参考,您可以使用内置的
LETTERS和letters向量来节省一些输入,而不是输入每个字母。
标签: r