Amostra aleatória de linhas do subconjunto de um dataframe R [duplicado]

Esta pergunta já tem uma resposta aqui:

xemplo de linhas aleatórias no dataframe 9 respostas

Existe uma boa maneira de obter uma amostra de linhas de parte de um datafram

Se eu tiver apenas dados como

gender <- c("F", "M", "M", "F", "F", "M", "F", "F")
age    <- c(23, 25, 27, 29, 31, 33, 35, 37)

então eu posso facilmente provar as idades de três dos Fs com

sample(age[gender == "F"], 3)

e obter algo como

[1] 31 35 29

mas se eu transformar esses dados em um dataframe

mydf <- data.frame(gender, age) 

Não consigo usar o óbvio

sample(mydf[mydf$gender == "F", ], 3)

embora eu possa inventar algo complicado com um número absurdo de colchetes como

mydf[sample((1:nrow(mydf))[mydf$gender == "F"], 3), ]

e consiga o que eu quero, algo como

  gender age
7      F  35
4      F  29
1      F  23

Existe uma maneira melhor que me leva menos tempo para descobrir como escrever?

questionAnswers(6)

yourAnswerToTheQuestion