У меня есть следующий код:
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
. - person nicola   schedule 05.10.2015myList
? Это список чисел? Из имен файлов? Из других объектов? Это именованный список, как если бы это были имена, которые вы хотите использовать для нового списка? - person David Robinson   schedule 05.10.2015names(dea_results) <- names_I_want
- person Pierre L   schedule 06.10.2015dea_results[["i"]] <- tmp_results
, поэтому в конечном итоге он будет иметь длину 1, поскольку новый элемент перезаписывает предыдущий. Так что менять имена в конце бесполезно. - person nicola   schedule 06.10.2015dea_results[[i]] <- tmp_results
. Но просто гадать без данных - person Pierre L   schedule 06.10.2015