我有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, B
或B, D
或D, A
等。
一千个谢谢!
答案 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)
您首先需要制作一个list或dataframe,您可以在其中进行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))