如何将列表中for循环的结果保存到" i"下的新列表中矢量名称?

时间:2015-10-05 20:37:22

标签: r list loops for-loop names

我有以下代码:

final_results <- list()

myfunc <- function(v1) {
  deparse(substitute(v1))
}

for (i in mylist) {

...calculations...


tmp_results <- as.data.frame(cbind(effcrs,weights))
colnames(tmp_results) <- c('efficiency',names(inputs),
                     names(outputs)) # header
rownames(tmp_results) <- namesDMU[,1]

#Save to list
name_in_list <- myfunc(i)
dea_results[[name_in_list]] <- tmp_results

}

上面的代码循环遍历数据帧列表。我希望从循环中得到的每个结果都存储在一个单独的列表中,该列表与从mylisti

获得的原始文件同名

我尝试使用deparse substitute。当我将它应用于mylist中的单个项目时,它看起来像这样:

myfunc(standard_DEA$'2010-11-11')
[1] "standard_DEA$\"2010-11-11\""

我不知道问题所在。目前,它以名称&#34; i&#34;并替换所有向量,因此最终结果是1的列表。

提前谢谢

1 个答案:

答案 0 :(得分:0)

这看起来像你想要一个do循环。

library(dplyr)

function_which_returns_dataframe = function(i) {

   ...calculations...

   tmp_results <- as.data.frame(cbind(effcrs,weights))
   colnames(tmp_results) <- c('efficiency',names(inputs),
                     names(outputs)) # header
   rownames(tmp_results) <- namesDMU[,1]
   tmp_results
}


data_frame(mylist = mylist,
           name = names(mylist)) %>%
  group_by(mylist, name) %>%
  do(function_which_returns_dataframe(.$mylist[[1]]))