将for循环的结果放入R中的数据框中

时间:2013-09-13 00:38:38

标签: r statistics

我有一个函数将返回一个数字类对象,这里是一个简化版本:

count.matches <- function(x) {
  ifelse(!is.na(a[,x] & a[,2]),1,0)
}

它只生成一个0和1的对象。 例如

count.matches(4)
[1] 0 0 0 0 1 1 0

我只是想对这个函数做一个简单的for循环并将结果存储在一个数据框中,即每次函数循环创建一个列,但是我遇到了麻烦。

p <- data.frame()
my.matches <- for(i in 2:100) { 
  p[i,] <- count.matches(i)
 }

这什么都不产生。对不起,如果这是一个非常愚蠢的问题,但我已经尝试了很多东西,似乎什么都没有用。如果您需要更多信息,请告诉我,我会提供。

1 个答案:

答案 0 :(得分:3)

for不返回循环中的最后一个值并合并结果。它返回NULL

使用for,您必须先创建data.frame,然后填写结果:

my.matches <- as.data.frame(matrix(0, nrow(a), ncol(a) - 1))
for (i in 2:100) {
  my.matches[,i] <- count.matches(i)
}

备选方案您可以使用foreach包,该包提供您期望for的功能。

library(foreach)
my.matches <- foreach(i = 2:100, .combine=data.frame) %do% {
  count.matches(i)
}