在R中重复for循环
假设我有一个在R中重复for循环,r,loops,R,Loops,假设我有一个10x10矩阵。我想从每列中随机选择2个数字,取这些数字之差的平方。我为此编写了R代码,得到了10个值,但我想重复这个,比如说,100次,在这种情况下,我需要得到100*10=1000个数字。我怎么能这么做 x <- rnorm(100) m <- 10 n <- 10 X <- matrix(x,m,n) for (i in 1:m ) { y <- sample(X[,i],2,rep=F) q2[i] <- (y[1]-y[2])^2
10x10
矩阵。我想从每列中随机选择2个数字,取这些数字之差的平方。我为此编写了R代码,得到了10个值,但我想重复这个,比如说,100次,在这种情况下,我需要得到100*10=1000个数字。我怎么能这么做
x <- rnorm(100)
m <- 10
n <- 10
X <- matrix(x,m,n)
for (i in 1:m ) {
y <- sample(X[,i],2,rep=F)
q2[i] <- (y[1]-y[2])^2
}
x或者评论中提到的@Davide Passaretti和@nrussell,您可以使用replicate
f1 <- function(x, m){
q2 <- vector(mode='numeric', length= m)
for(i in 1:m){
y <- sample(x[,i], 2, rep=FALSE)
q2[i] <- (y[1]-y[2])^2
}
q2
}
n <- 100
res <- replicate(100, f1(X, m))
prod(dim(res))
#[1] 1000
f1查看?复制
只需将你的循环作为一个函数进行包装,并按照@Davide Passaretti的建议使用复制
,可能只需复制(100,sapply(data.frame(X),function(y)diff(sample(y,2))^2))
即可work@DavidArenburg谢谢它非常有效