有没有一种从数据帧的一部分获取行样本的好方法?
如果我只有这样的数据
gender <- c("F", "M", "M", "F", "F", "M", "F", "F")
age <- c(23, 25, 27, 29, 31, 33, 35, 37)
然后我可以轻松地采样三个 F 的年龄
sample(age[gender == "F"], 3)
并得到类似的东西
[1] 31 35 29
但如果我把这些数据变成一个数据框
mydf <- data.frame(gender, age)
我不能使用显而易见的
sample(mydf[mydf$gender == "F", ], 3)
尽管我可以编造一些带有荒谬数量的括号的复杂内容,例如
mydf[sample((1:nrow(mydf))[mydf$gender == "F"], 3), ]
并得到我想要的东西,就像
gender age
7 F 35
4 F 29
1 F 23
有没有更好的方法可以让我花更少的时间来学习如何写作?