注:我有超级新的R(刚刚从斯塔塔过渡)!
嗨,伙计们!我有大量的"plm“对象编号为plm_f_1_1,plm_f_1_2,.,plm_f_1_17,plm_f_2_1,以此类推,我存储了系数的数据帧,比如在"female_q1“中。我试图遍历"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的方式,或者类似的方式?会很感激你的帮助!谢谢!
发布于 2016-05-12 21:56:09
没关系,我明白了:我把我所有的plm对象作为一个列表放在一个列表中,然后我就不用使用get或assign命令了,而且它工作得很好:
plm_female_all[[i]]$coefficients[x] = female_q[1,x]发布于 2016-05-12 22:01:30
恭喜你从混乱的get's和assign那里过渡到了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))https://stackoverflow.com/questions/37197513
复制相似问题