在R中为for循环分配值

时间:2015-01-09 17:13:20

标签: r loops for-loop assign

我的数据框是" i"列,并希望运行" j"每个列的回归与来自另一个函数(cluster_simple)的提取组件的回归,返回一个向量,使得:

print(RSquared_1)
[1] "rsquared value 1" "rsquared value 2" "etc," 

为此,我有两个循环:

for (i in 1:columns)
  {assign(paste("Rsquared_",i,sep="",collapse=NULL),
            #Assign these values from this loop 
            for (j in 1:iterations) 
              { exp<-cluster_simple(frame,number,noprint=T)
                reg<-lm(exp[,'clusters']~exp[,i])
                rsq[j]<-summary(reg)$r.squared
              }
          )
  }

到目前为止,两个循环都可以自行运行,但是我无法将值分配给变量,我最终得到:

print(RSquared_1)
NULL

我需要在分配中应用某些特定功能吗?

1 个答案:

答案 0 :(得分:2)

如果您只想要ij平方值的集合,那么您可以做更简单的事情。

这会对cluster_sampleij次返回的向量进行回归。输出是一个长度为i的列表,其中每个项目的平均值为j平方。

n <- 20 # rows
i <- 10 # columns
j <- 5 # iterations

# dummy data
dat <- data.frame(matrix(rnorm(n*i), ncol=i))

# dummy function
cluster_simple <- function() rnorm(n)

# regress cluster_simple on each column i, j times
r_sq_list <-
  lapply(1:i, function(ii) {
    sapply(1:j, function(jj) {
      summary(lm(cluster_simple() ~ dat[,ii]))$r.squared
    })
  })


# get the r_sq for the 7th column regression, 3rd iteration
r_sq_list[[7]][3]