从 R 中的 for 循环赋值
Assign values from a for loop in R
我有一个包含 "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
我需要在分配中应用一些特定的功能吗?
如果您想要的只是 i
个 j
r 平方值的集合,您可以做一些更简单的事情。
每 i
、j
次回归由 cluster_sample
返回的向量。输出是一个长度为 i
的列表,其中每一项都是 j
r 平方值。
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]
我有一个包含 "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
我需要在分配中应用一些特定的功能吗?
如果您想要的只是 i
个 j
r 平方值的集合,您可以做一些更简单的事情。
每 i
、j
次回归由 cluster_sample
返回的向量。输出是一个长度为 i
的列表,其中每一项都是 j
r 平方值。
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]