如何使用apply函数重写for循环

如何使用apply函数重写for循环,r,for-loop,apply,lapply,R,For Loop,Apply,Lapply,我有以下数据: rand.sum <- function(n){ x <- sort(runif(n-1)) c(x,1) - c(0,x) } M <- t(replicate(8,rand.sum(8))) # data frame with probabilities Test1 <- as.data.frame(t(replicate(1, rand.sum(8)))) Test2 <- as.data.frame(t(replicate(1, rand

我有以下数据:

rand.sum <- function(n){
x <- sort(runif(n-1))
c(x,1) - c(0,x)
}

M <- t(replicate(8,rand.sum(8))) # data frame with probabilities

Test1 <- as.data.frame(t(replicate(1, rand.sum(8))))
Test2 <- as.data.frame(t(replicate(1, rand.sum(8))))
Test <- rbind(Test1,Test2) # Test data

ID1 <- c("ID1")
ID2 <- c("ID2")
ID <- rbind(ID1,ID2) #ID's

data <- cbind(ID,Test)

可能的重复我要跳到这里说,使用
apply
函数不会比为循环编写等价的
快多少。使用
apply
函数的原因很简单,它允许为某些应用程序提供干净、易于阅读的代码。更多参考资料:更多关于此主题的信息:@Mako212非常感谢您的输入!
gemeinden_new <- lapply(1:dim(Test)[1], function(z)
                   as.data.frame(
                         matrix(sapply(1:8, function(i) sum(data[z,2:9] * M[,i])),
                                nrow=1, ncol=8)
                   ))
library(tibble)

gemeinden_new <- lapply(gemeinden_new, function(x){
                add_column(x, gemeindeschluessel = 0, .before = 1)
                 })

for(i in 1:dim(Test)[1]) { 
  z <- i
  gemeindeschluessel <- paste(data[z,1])
  gemeinden_new[[z]][z,1] <- gemeindeschluessel
}
 # $ID1
    #    gemeindeschluessel      V1        V2         V3        V4         V5             V6         V7       V8
    # 1 ID1 0.0598796 0.1526457 0.08604147 0.2314867 0.06307882 0.2047462 0.07962943 0.122492

# $ID2
#    gemeindeschluessel      V1        V2         V3        V4         V5        V6         V7        V8
# 1 ID2 0.1385492 0.1047066 0.06278719 0.1710685 0.09209054 0.2519348 0.06434532 0.1145178