2016-05-12 4 views
0

Примечание: я супер новый для R (только переход из Stata)!Пытается прорезать объекты «plm» в R и заменить коэффициенты (атомный вектор, неязычный)

Привет, ребята! Я имею большое количество объектов «plm», пронумерованных как plm_f_1_1, plm_f_1_2, ..., plm_f_1_17, plm_f_2_1, ... и т. Д., И у меня есть кадры данных с сохраненными коэффициентами, скажем в «female_q [1,]» , Я пытаюсь петля через «Plm» объекты и попытаться сделать эту операцию:

for (i in 1:26) { 
    plm_f_1_1$coefficients[i]=female_q[1,i] 
} 

Так это работает для одного объекта Plm, когда я пытаюсь перебрать последний номер в имени объекта, я получаю эта ошибка (только с указанием одной точки в female_q кадра данных), когда я пытаюсь получить :

get(paste0("plm_f_1_",i))$coefficients[1]=female_q[1,1] 

Error in get(paste0("plm_f_1_", i))$coefficients[1] = female_q[1,1] : 
    target of assignment expands to non-language object 

и это один с назначить:

assign(paste0("plm_f_1_",i)$coefficients[1],1) 

Error in paste0("plm_f_1_", i)$coefficients : 
    $ operator is invalid for atomic vectors 

Вот некоторые описания о том, как структуры выглядит следующим образом:

str(get(paste0("plm_f_1_",i))$coefficients) 
Named num [1:26] 0.1362 -0.1835 -0.3464 0.2858 -0.0634 ... 
- attr(*, "names")= chr [1:26] "(Intercept)" "dem_log_gdppc_5" "dem_log_mat_educ_5" "dem_log_pop_15_share_5" ... 


get(paste0("plm_f_1_",i))$coefficients[1] 
(Intercept) 
    0.1361659 

female_q[1,1] 
[1] 0.1314744 

Я интересно, если я должен изменить способ female_q который вызывается, или что-то вдоль этих линий? Поблагодарили бы за любую помощь! Благодаря!!!

ответ

0

Ничего, я получил это: Я положил все свои объекты Plm в списке, как таковой, и тогда я не должен использовать получить или назначить команду, и она отлично работает:

plm_female_all[[i]]$coefficients[x] = female_q[1,x] 
0

Поздравляем перехода к list-х из запутанных get-х и assign «s

Я не проверял это, но это может упростить обработку

PLM_List = ls(pattern="^plm_f_*"); 


fn_ProcessDF = function(PLMObj = PLMname,replacementDF = female_q, colIndices = 1:26) { 

PLMObj = get(PLMObj) 

PLMObj$coefficients[colIndices] = replacementDF[,colIndices] 

PLMObj = PLMObj 

} 

lapply(1:length(PLM_List),function(x) fn_ProcessDF(PLMObj = x ,replacementDF = female_q[x,], colIndices = 1:26))