【发布时间】:2013-08-05 15:15:51
【问题描述】:
`我想知道如何更改此代码,以使两个向量的对应值不能相等。例如:如果 x = (1, 2, 2, 4, 8, 1, 7, 9, 5, 10) 并且 y = (3, 2, 7, 8, 4, 10, 4, 8, 2, 1),两个向量的第二个值等于 2。有什么办法可以告诉 R 在向量 x 的第二个点重新采样,直到它与向量 y 中的值不同?
x <- c(1:10)
y <- c(1:10)
sample_x <- sample(x, length(10), replace = TRUE)
z <- sample_x > y`
【问题讨论】:
-
length(10)是1,您的代码有些奇怪。sample_x > y也没有多大意义。 -
OP 代码中的
sample_x的大小为 1,因此sample_x > y将针对y中的每个值检查sample_x。 (我确定不是预期的,但会运行良好) -
我在想 length(10) 会创建一个长度为 10 的向量,但我想不会。我试图在替换值时从 x 采样 10 次。因此,z 会给我 TRUE 或 FALSE,具体取决于 sample_x 中的值是否大于向量 y 中的对应值。
-
旁注:要获得长度为
n整数的向量,请使用seq(n) -
所以你的意思是
sample_x <- sample(x, 10, replace = TRUE)也可能是z <- sample_x == y或z <- any(sample_x == y)。
标签: r vector random-sample