我有一个返回数字类对象的函数,这是一个简化版本:
count.matches <- function(x) {
ifelse(!is.na(a[,x] & a[,2]),1,0)
}
Run Code Online (Sandbox Code Playgroud)
它只产生一个 0 和 1 的对象。例如
count.matches(4)
[1] 0 0 0 0 1 1 0
Run Code Online (Sandbox Code Playgroud)
我只想对这个函数做一个简单的 for 循环并将结果存储在一个数据框中,即每次函数循环创建一个列,但是我遇到了麻烦。
p <- data.frame()
my.matches <- for(i in 2:100) {
p[i,] <- count.matches(i)
}
Run Code Online (Sandbox Code Playgroud)
这不会产生任何结果。对不起,如果这是一个非常愚蠢的问题,但我已经尝试了很多东西,但似乎没有任何效果。如果您需要更多信息,请告诉我,我会提供。
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)
}
Run Code Online (Sandbox Code Playgroud)
或者,您可以使用该foreach包,它提供了您期望从for.
library(foreach)
my.matches <- foreach(i = 2:100, .combine=data.frame) %do% {
count.matches(i)
}
Run Code Online (Sandbox Code Playgroud)