如何选择随机向量

时间:2020-02-24 13:14:19

标签: r vector random sampling

我有4个包含整数的向量。

我想基于随机选择的两个向量进行计算。

我尝试创建一个包含所有向量的新向量,但是sample()仅给我每个向量的第一个元素。

如果有帮助,我的引导程序:

A <- c(4, 4, 4, 4, 0, 0)
B <- c(3, 3, 3, 3, 3, 3)
C <- c(6, 6, 2, 2, 2, 2)
D <- c(5, 5, 5, 1, 1, 1)

我想要的输出例如:A, BB, DD, A等。

一千个谢谢!

3 个答案:

答案 0 :(得分:4)

如果将向量存储在列表中,这样做会更容易:

vecs <- list(
  A = c(4, 4, 4, 4, 0, 0),
  B = c(3, 3, 3, 3, 3, 3),
  C = c(6, 6, 2, 2, 2, 2),
  D = c(5, 5, 5, 1, 1, 1)
)

idx <- sample(1:length(vecs), 2, replace = F)

sampled <- vecs[idx]

sampled

$D
[1] 5 5 5 1 1 1

$B
[1] 3 3 3 3 3 3

然后,您可以使用sampled[[1]]sampled[[2]]访问两个采样的向量,而不论它们的名称如何。

答案 1 :(得分:3)

您首先需要制作一个,您可以在其中进行sample()size=表示每个样本中所需的向量数量,此处为2

列表

> LIST <- list(A, B, C, D) 
> sample(LIST, size = 2)
[[1]]
[1] 3 3 3 3 3 3

[[2]]
[1] 4 4 4 4 0 0

数据框

> df <- data.frame(A, B, C, D)
> sample(df, size = 2)
  B C
1 3 6
2 3 6
3 3 2
4 3 2
5 3 2
6 3 2

我认为您是在错误的物体上进行采样的。

答案 2 :(得分:1)

列出清单:

LIST = list(A,B,C,D)
names(LIST) = c("A","B","C","D")

这从列表中为您提供了2个样本

sample(LIST,2)

例如,要添加它们,请执行以下操作:

Reduce("+",sample(LIST,2))