0

我可以像这样从 data.frame 中采样 10 行:

mtcars[sample(1:32, 10),]

使用 dplyr 执行此操作的语法是什么?这是我尝试过的:

library(dplyr)
filter(mtcars, sample(1:32, 10))
4

2 回答 2

1

我相信您在示例中并没有真正“过滤”,您只是在对行进行采样。

用 hadley 的话来说,这里是函数的目的:

filter() 与子集() 的工作方式类似,只是您可以为其提供任意数量的过滤条件,这些条件与 & 连接在一起(不是 &&,这很容易意外做到!)

这是 mtcars 数据集的示例,因为它在介绍性小插图中使用

library(dplyr)
filter(mtcars, cyl == 8, wt < 3.5)
mpg cyl disp  hp drat    wt  qsec vs am gear carb
1 18.7   8  360 175 3.15 3.440 17.02  0  0    3    2
2 15.2   8  304 150 3.15 3.435 17.30  0  0    3    2
3 15.8   8  351 264 4.22 3.170 14.50  0  1    5    4

作为结论:过滤器等效于subset(),而不是sample()

于 2014-01-27T22:54:36.757 回答
0

想出了如何做到这一点(尽管乔什·奥布莱恩(Josh O'Brien)击败了我):

filter(mtcars, rownames(mtcars) %in% sample(rownames(mtcars), 10, replace = F))
于 2014-01-28T07:30:44.750 回答