【发布时间】:2016-01-02 15:11:35
【问题描述】:
我有以下代码:
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
}
上面的代码循环遍历数据框列表。我希望循环产生的每个结果都存储在与从mylist 或i 获得的原始文件同名的单独列表中
我尝试使用deparse substitute。当我将它应用于mylist 中的单个项目时,它看起来像这样:
myfunc(standard_DEA$'2010-11-11')
[1] "standard_DEA$\"2010-11-11\""
我不知道问题是什么。目前它将所有内容保存在名称“i”下并替换所有向量,因此最终结果是 1 的列表。
提前谢谢你
【问题讨论】:
-
您的示例中有很多不必要的行,而您的目标不是很清楚。我猜你应该遍历索引而不是列表的元素。我会在循环之前尝试
listnames<-names(mylist)。然后,我会循环使用for (j in 1:length(mylist)),设置i<-mylist[[j]],然后将最终赋值为dea_results[[listnames[j]]] <- tmp_results。 -
什么是
myList?它是一个数字列表吗?文件名?其他物体?它是一个命名列表吗,就好像您要用于新列表的名称一样? -
我不会担心循环中的名称。循环之后,
names(dea_results) <- names_I_want -
@PierreLafortune 阅读 OP 的最后一行:“目前它将所有内容保存在名称“i”下。因此,如果列表没有正确构建,那么在循环之后更改名称就没有意义了。
-
@nicola 如果唯一的问题是名称不正确,最后 channing 将解决它。您说它没有正确构建,这是用户试图操纵它而产生的一个单独问题。
标签: r list loops for-loop names