आर: सही ढंग से बुला एक चर होता है कि `मैं`

0

सवाल

मैं काम कर रहा हूँ के साथ आर प्रोग्रामिंग भाषा है । मैं निम्नलिखित कोड है कि बनाता है 100 डेटा सेट (युक्त एक निश्चित घटक और एक यादृच्छिक घटक):

a = rnorm(300,10,5)
b = rnorm(300,3,1)
c = rnorm(300,12,1)
e = "original"
d = data.frame(a,b,c,e)


results <- list()

for (i in 1:100){

a = rnorm(100,10,10)
b = rnorm(100,10,10)
c = rnorm(100,10,10)
e = "simulated"

d_i = data.frame(a,b,c,e)

data_i = rbind(d, d_i)
data_i$iteration = i
 results[[i]] <- data_i

}



results_df <- do.call(rbind.data.frame, results)

फिलहाल, इन 100 डेटासेट के सभी में रखा गया एक ही फ़ाइल ("results_df"). अब, मैं तोड़ने के लिए चाहते हैं "results_df" फ़ाइल में इन में से प्रत्येक के 100 डेटासेट का उपयोग कर ("चलना" स्तंभ सूचकांक के रूप में):

results_df$iteration = as.factor(results_df$iteration)
X<-split(results_df, results_df$iteration)

इस "X" फाइल करने के लिए लगता है एक "सूची" के साथ प्रत्येक के 100 डेटासेट सूचीबद्ध के रूप में निम्नानुसार:

enter image description here

मैं का उपयोग कर सकते हैं में से प्रत्येक के इन फ़ाइलों को फोन करके "सूचकांक" का उपयोग कर i , उदाहरण के लिए

> head(X$`1`)
          a        b        c        e iteration
1  2.141495 3.984072 12.73344 original         1
2  8.769269 4.267464 11.32566 original         1
3  5.413573 2.823608 12.06713 original         1
4 11.710470 3.710500 12.20715 original         1
5 14.423155 2.944178 10.56673 original         1
6  6.886629 2.843195 12.43074 original         1
> head(X$`2`)
            a        b        c        e iteration
401  2.141495 3.984072 12.73344 original         2
402  8.769269 4.267464 11.32566 original         2
403  5.413573 2.823608 12.06713 original         2
404 11.710470 3.710500 12.20715 original         2
405 14.423155 2.944178 10.56673 original         2
406  6.886629 2.843195 12.43074 original         2
> head(X$`98`)
              a        b        c        e iteration
38801  2.141495 3.984072 12.73344 original        98
38802  8.769269 4.267464 11.32566 original        98
38803  5.413573 2.823608 12.06713 original        98
38804 11.710470 3.710500 12.20715 original        98
38805 14.423155 2.944178 10.56673 original        98
38806  6.886629 2.843195 12.43074 original        98

मेरा सवाल है: मैं अब लिखने के लिए चाहते हैं एक अन्य समारोह में प्रदर्शन करती है जो रेखीय प्रतिगमन इन में से प्रत्येक पर 100 डेटासेट बचाता है, प्रतिगमन गुणांक है, और स्थानों में उन्हें एक एकल फाइल. मैं कोशिश करने के लिए कोड लिखने के लिए, इस:

results_1 <- list()

for (i in 1:100){

model_i <- lm(a ~ b +c, data = X$`i`)
coeff_i = model_i$coefficients

 results_1[[i]] <- coeff_i 

}

results_df_1 <- do.call(rbind.data.frame, results_1)

पर पहली नज़र में, यह प्रतीत होता है के लिए काम किया है - लेकिन यह है कि सभी प्रदर्शित करने के लिए प्रतिगमन गुणांकों के रूप में एक ही. यह असंभव है, के रूप में देखकर प्रतिगमन मॉडल चलाया गया था 100 बार पर अलग अलग डेटासेट :

#for some reason, the column names have been corrupted

hist(results_df_1$c.14.5741211250235..14.5741211250235..14.5741211250235..14.5741211250235.., main = "first coeff")

 hist(results_df_1$c..0.105285805666629...0.105285805666629...0.105285805666629.., main = "second coeff")

 hist(results_df_1$c..0.236548691738492...0.236548691738492...0.236548691738492.., main = "third coeff")

enter image description here

कर सकते हैं किसी को मदद के लिए कृपया मुझे इस समस्या को ठीक? जब आप का उपयोग "विभाजन()" समारोह में, यह सही तरीका करने के लिए "कॉल", "विभाजन" घटकों में भविष्य के आदेशों ?

model_i <- lm(a ~ b +c, data = X$`i`)

धन्यवाद!

data-manipulation function loops r
2021-11-23 05:07:10
1

सबसे अच्छा जवाब

0

मैं करने में सक्षम था, इस समस्या को ठीक:

a = rnorm(300,10,5)
b = rnorm(300,3,1)
c = rnorm(300,12,1)
e = "original"
d = data.frame(a,b,c,e)


results <- list()

for (i in 1:100){

a = rnorm(100,10,10)
b = rnorm(100,10,10)
c = rnorm(100,10,10)
e = "simulated"

d_i = data.frame(a,b,c,e)

data_i = rbind(d, d_i)
data_i$iteration = i
 results[[i]] <- data_i

}



results_df <- do.call(rbind.data.frame, results)

X<-split(results_df, results_df$iteration)

#####

results_1 <- list()

for (i in 1:100){

#here was the problem
model_i <- lm(a ~ b +c, data = X[[i]])

coeff_i = model_i$coefficients

 results_1[[i]] <- model_i$coefficients

}

results_df_1 <- do.call(rbind.data.frame, results_1)

par(mfrow = c(1, 3))

hist(results_df_1[,1], main = "first coeff")
hist(results_df_1[,2], main = "second coeff")
hist(results_df_1[,3], main = "third coeff")

enter image description here

2021-11-23 05:48:18

अन्य भाषाओं में

यह पृष्ठ अन्य भाषाओं में है

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................