在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谢谢它非常有效