0
下面是使用模擬數據簡化我的問題。我想對列表中的元素執行雙重循環以獲得一些彙總統計信息。這裏是我的數據結構和approchimation的簡化:列表中的雙循環r
x1 <- runif(10, 5.0, 7.5)
x2 <- runif(10,3,7)
x3 <- runif(10,1,9)
x4 <- rep(1:2, c(6,4))
bag<-data.frame(cbind(x1,x2,x3,x4))
x1 <- runif(10, 5.0, 7.5)
x2 <- runif(10,3,7)
x3 <- runif(10,1,9)
x4 <- rep(1:2, c(6,4))
zul<-data.frame(cbind(x1,x2,x3,x4))
x1 <- runif(10, 5.0, 7.5)
x2 <- runif(10,3,7)
x3 <- runif(10,1,9)
x4 <- rep(1:2, c(6,4))
lwk<-data.frame(cbind(x1,x2,x3,x4))
x1 <- runif(10, 5.0, 7.5)
x2 <- runif(10,3,7)
x3 <- runif(10,1,9)
x4 <- rep(1:2, c(6,4))
job<-data.frame(cbind(x1,x2,x3,x4))
lts <- list(bag,zul,lwk,job)
for (i in 1:4){
colnames(lts[[i]])=c("val1","val2","val3","class")
}
現在我可以得到的,例如,意味着每個列表元素的值1的:
lst.mean.c1<-list()
for (i in 1:4){
lst.mean.c1[[i]]<-mean(lts[[i]]$val1[lts[[i]]$class==1])
}
但想我要的是獲取變量value1,value2,value3的所有方法的列表。我試圖這樣做:
num<-seq(1:3)
idc<-gsub(".val","",gsub(".val","",num))
lts.mean.val<-list()
for (j in 1:4){
for (i in idc){
lts.mean.val[[i]]<-mean(lts[[j]]$val[[i]][lts[[j]]$class==1])
}
}
我沒有任何成功。你能幫我
看看'colMeans' – Sotos
呀,嘗試這樣做:? lst.mean < - 名單() 爲(我在1:4中){ lst.mean [[i]] < - colMeans(lts [[i]] [lts [[i]] $ class == 1]) } 。但是,在[[.data.frame](lts [[i]],lts [[i]] $ class == 1)中出現錯誤: 未定義列選擇 – Cebs
對於'class == 1',然後'lapply lts,函數(i)colMeans(i [i $ class == 1,1:3]))'...(未測試) – Sotos