对于R中的循环:如何将所有输出存储在循环中?

时间:2015-06-16 14:50:18

标签: r

我想在循环中保存所有输出,然后将输出与j进行对比。我尝试了很多东西,但我没有存储所有输出。在程序结束时,我只有一个变量。这是我的代码:

Tsim <- 0.815
toplam <- 0
toplam_ortalama_enerji <- 0
toplam_ortalama_enerji_kare <- 0
mydata <- read.table("/local/syaman/1RLQ_cm3.680-6.400_GO_KEFC1.40_e1.00_T0.815_ii4_trj.dat")

x <- mydata[-1:-5000,]
enerji <- x[,3]
l <- length(enerji)
step <- seq(0.1, 2.5, by=0.001)

for(j in step){
    sicaklik = j + sicaklik
    for(i in 1:l){
        Si = exp((enerji[i]/Tsim)-(enerji[i]/sicaklik))
        toplam = toplam + Si
        ortalama_enerji <- enerji[i]*Si
        toplam_ortalama_enerji <- toplam_ortalama_enerji + ortalama_enerji
        ortalama_enerji_kare <- enerji[i]*enerji[i]*Si
        toplam_ortalama_enerji_kare <- toplam_ortalama_enerji_kare + ortalama_enerji_kare
    }
    isi_kapasitesi = ((toplam_ortalama_enerji_kare/toplam)-((toplam_ortalama_enerji/toplam)*(toplam_ortalama_enerji/toplam)))/(sicaklik*sicaklik)
    print(isi_kapasitesi)
}

我想保存所有isi_kapasitesi

2 个答案:

答案 0 :(得分:0)

我想你需要的是基本的东西吗?

storage = c()
for(j in step){
   ...
   storage = c(storage, isi_kapasitesi)
}

答案 1 :(得分:0)

如果你想使用这样的for循环,你需要首先创建isi_kapasitesi作为循环外的列表,然后按如下方式存储每个单独的元素:

isi_kapasitesi <- list()
for(j in 1:length(step)){
sicaklik = step[j] + sicaklik
for(i in 1:l){
    Si = exp((enerji[i]/Tsim)-(enerji[i]/sicaklik))
    toplam = toplam + Si
    ortalama_enerji <- enerji[i]*Si
    toplam_ortalama_enerji <- toplam_ortalama_enerji + ortalama_enerji
    ortalama_enerji_kare <- enerji[i]*enerji[i]*Si
    toplam_ortalama_enerji_kare <- toplam_ortalama_enerji_kare + ortalama_enerji_kare
}
isi_kapasitesi[j] = ((toplam_ortalama_enerji_kare/toplam)-((toplam_ortalama_enerji/toplam)*(toplam_ortalama_enerji/toplam)))/(sicaklik*sicaklik)
print(isi_kapasitesi[j])

在您仅将最后一个值存储在循环中之前编写它的方式。