簡體   English   中英

將for循環的結果放入R中的數據幀

[英]Putting Results of for loop into a data frame in R

我有一個將返回數字類對象的函數,這是一個簡化的版本:

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)
 }

這什么也不會產生。 抱歉,這是一個非常愚蠢的問題,但是我嘗試了很多事情,但似乎沒有任何效果。 如果您需要更多信息,請告訴我,我會提供。

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)
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM