从data.frame
,a
如果a
包含多行,我想随机选择5行,否则我希望原样返回a
。< / p>
a <- data.frame(x=1:10, y=1:10)
a[if(nrow(a) > 5) sample(nrow(a), 5) else 1:nrow(a), ]
我尝试删除else
子句(不起作用)或者至少省略了else子句中的1:nrow(a)
,只返回'something'以便选择所有行(类似{ {1}}如果a[ , ]
)。我还有什么要回来的?我试过nrow(a) <= 5
和NA
都没有用。有没有办法实现这个目标?
答案 0 :(得分:1)
首先,你可以这样做:
if(nrow(a)>5) {a[sample(nrow(a),5),]} else(a)
或者像这样:
a[if(nrow(a)>5) {sample(nrow(a),5)} else TRUE,]
您尝试的问题是您传递给sample()的参数,您省略了逗号。空白&#39;语法是速记。 TRUE
或1:nrow(a)
实现了您的目标。