2016-07-11 4 views
1

Итак, у меня есть довольно длинный список элементов, и я хочу сохранить каждый из этих элементов по отдельности в качестве фрейма данных. Правильно, теперь я пытаюсь это сделать:Как сохранить элементы списка отдельно в R?

for (i in 1:length(mylist)) { 
    save.dta13(mylist[i], file=paste0(names(mylist)[i], ".dta")) 
} 

Но это, кажется, не работает, никаких идей?

+0

Вы, вероятно, хотите использовать '[[ 'in' mylist [[i]] '. – lmo

ответ

0

Мы можем использовать lapply в петлю над names из list

lapply(names(mylist), function(nm) 
    save.dta13(mylist[[nm]], paste0(nm, ".dta"))) 
+0

Это не ошибка, но ничего не происходит, что мне не хватает? – Floris

+0

@Floris Из какого пакета 'save.dta13' происходит? – akrun

+0

Это от readstata13 – Floris

1

Вот еще одно решение (немного отличается от того, что akrun отправил)

An example list 

L=list(mat1=matrix(c(1,2,3,4,5,6,7,8,9),3,3),mat2=matrix(c(1,2,3,4,5,6,7,8,9),3,3),mat3=matrix(c(1,2,3,4,5,6,7,8,9),3,3)) 

#Convert elements of list to a data frame 
L_DF = lapply(L,function(x)as.data.frame(x)) 

#Check the class of each element 
> class(L_DF$mat1) 
[1] "data.frame" 
> 


> class(L_DF$mat2) 
[1] "data.frame" 
> 

    > class(L_DF$mat3) 
[1] "data.frame" 
> 

    > names(L_DF) 
[1] "mat1" "mat2" "mat3" 
> 


#Save as dta 

> lapply(names(L_DF), function(x) { 
+  f <- L_DF[[x]] 
+  save(f, file=paste0(getwd(),'/', x, '.dta')) 
+ }) 

 Смежные вопросы

  • Нет связанных вопросов^_^