如何对 R 中配对的项目进行采样()而不丢失对
How to take sample() of items that are paired in R and not lose pairs
我有一个 x 和 y 地理坐标(30,000 多个坐标)的数据框,看起来像下面的示例矩阵 points
。我想随机抽取这些样本,但这样我就不会丢失 x 和 y 坐标对。
例如,我知道我可以获得 x
和 y
中的 2 个项目的随机样本,但我如何获得随机样本以便将项目放在一起保存了吗?换句话说,在我的 points
矩阵中,一个实际点是与 y
列表中的第一项对应的一对 x 坐标(例如,第一项:-12.89): 18.275.
有没有一种方法可以将 x
和 y
中的项目放在一起,以便将顺序保存在类似元组的对象中(我更像是 python 用户)然后使用 sample()
随机抽样?谢谢。
# Make some pretend data
x<-c(-12.89,-15.35,-15.46,-41.17,45.32)
y<-c(18.275,11.370,18.342,18.305,18.301)
points<-cbind(x,y)
points
# Get a random sample:
# This is wrong because the x and y need to be considered together
c(sample(x, 2),
sample(y, 2))
# This is also wrong because it treats each item in `points` separately
sample(points, size=2, replace=FALSE)
最终,在这个例子中,我希望得到两个随机配对在一起的结果。
例如:(-15.35,11.370) 和 (45.32,18.301)
您可以从行索引中取一个sample
:
set.seed(42)
points[sample(seq_len(nrow(points)), 2), ]
给予
# x y
#[1,] -12.89 18.275
#[2,] 45.32 18.301
另一个选项可以是:
set.seed(123)
do.call(`rbind`, sample(asplit(points, 1), 2))
x y
[1,] -15.35 11.370
[2,] -41.17 18.305
我有一个 x 和 y 地理坐标(30,000 多个坐标)的数据框,看起来像下面的示例矩阵 points
。我想随机抽取这些样本,但这样我就不会丢失 x 和 y 坐标对。
例如,我知道我可以获得 x
和 y
中的 2 个项目的随机样本,但我如何获得随机样本以便将项目放在一起保存了吗?换句话说,在我的 points
矩阵中,一个实际点是与 y
列表中的第一项对应的一对 x 坐标(例如,第一项:-12.89): 18.275.
有没有一种方法可以将 x
和 y
中的项目放在一起,以便将顺序保存在类似元组的对象中(我更像是 python 用户)然后使用 sample()
随机抽样?谢谢。
# Make some pretend data
x<-c(-12.89,-15.35,-15.46,-41.17,45.32)
y<-c(18.275,11.370,18.342,18.305,18.301)
points<-cbind(x,y)
points
# Get a random sample:
# This is wrong because the x and y need to be considered together
c(sample(x, 2),
sample(y, 2))
# This is also wrong because it treats each item in `points` separately
sample(points, size=2, replace=FALSE)
最终,在这个例子中,我希望得到两个随机配对在一起的结果。 例如:(-15.35,11.370) 和 (45.32,18.301)
您可以从行索引中取一个sample
:
set.seed(42)
points[sample(seq_len(nrow(points)), 2), ]
给予
# x y
#[1,] -12.89 18.275
#[2,] 45.32 18.301
另一个选项可以是:
set.seed(123)
do.call(`rbind`, sample(asplit(points, 1), 2))
x y
[1,] -15.35 11.370
[2,] -41.17 18.305