2014-09-03 74 views
0

data.frame,a我想随机选择5行,如果a有多行,否则我想返回a原样。If else in“[”;如何返回

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)等所有选择行只是返回“东西”(类似a[ , ]如果nrow(a) <= 5)。我需要返回什么?我试过NANULL都没有工作。有没有办法做到这一点?

+0

试试'if(nrow(a)> 5)a [sample(nrow(a),5),] else a' – 2014-09-03 16:11:57

+0

感谢您的建议,我想我真正想知道的是,我有什么在'a [,]中的逗号前面返回等于'Nothing'的'else'。也许这是不可能的。 – johannes 2014-09-03 16:22:36

回答

1

首先,你可以像这样做:

if(nrow(a)>5) {a[sample(nrow(a),5),]} else(a) 

或像这样:

a[if(nrow(a)>5) {sample(nrow(a),5)} else TRUE,] 

的问题,您尝试与参数传递给样品(),你冷落一个逗号。 '空白'语法是简写。 TRUE1:nrow(a)达到您的目标。

+0

传递TRUE就像空白的一样。 – mgriebe 2014-09-03 16:26:42

+0

事实上,这是'真',非常感谢。 – johannes 2014-09-03 16:43:24