在 R 中使用行号进行采样

Sampling with row number in R

假设我的数据集比下面的数据集大得多:

df = data.frame(x = c("ciao mondo", "hello world", "ciao world","hello mondo","bye mondo","ciao ciao mondo"))

我想随机抽样,不放回几行,所以我这样做了:

sample(df$x,size = 3, replace = F)

问题是我不再拥有采样行的原始行索引。我的数据集很大,所以使用 grepl() 之类的东西来检索原始行索引效率很低。

你知道怎么做吗?

非常感谢!

不是在列上采样,而是在行序列上执行 sample,因此它将 return 行索引,稍后可用于对行进行子集化

i1 <- sample(seq_len(nrow(df)), size = 3, replace = FALSE)

您可以将行号放入列中,然后从该数据框中采样行。

df$row = 1:nrow(df)
df[sample(nrow(df), 3, replace = F),]

set.seed(0)

后的结果
               x row
6 ciao ciao mondo   6
1      ciao mondo   1
4     hello mondo   4