如果在" [&#34 ;;什么回来

时间:2014-09-03 16:06:16

标签: r

data.framea如果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) <= 5NA都没有用。有没有办法实现这个目标?

1 个答案:

答案 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;语法是速记。 TRUE1:nrow(a)实现了您的目标。