2014-01-09 8 views
5

72 개 요소로 R 목록을 만들었습니다. 이 파일을 각 요소의 이름이있는 72 개의 단일 데이터 프레임에 어떻게 나열합니까? 여기 목록 파일을 여러 개의 데이터 프레임에 나열 취소

은 예입니다

L <- list(data.frame(matrix(1:4,2,2)), 
      data.frame(matrix(9:12,2,2)), 
      data.frame(matrix(5:8,2,2))) 
names(L)<-c("a","b","c") 

어떻게 세 dataframes A, B 및 C를받을 수 있나요?

답변

2

내에서 assign을 글로벌 환경에 사용할 수 있습니다. 참고 출력을 콘솔에 인쇄하지 않으려면 invisible으로 전화를 겁니다. 요소가 목록에있는 동안

invisible(lapply(names(L),function(x) assign(x,L[[x]],.GlobalEnv))) 
ls() 
[1] "a" "b" "c" "L" 
a 
    X1 X2 
1 1 3 
2 2 4 

그러나, 그들은 예를 들어 lapply를 사용하여 작업하는 것이 더 쉬울 수 있습니다.

7

은 ...

list2env(L , .GlobalEnv) 

을 해당하는 기능이있어하지만 제임스가 말한 것처럼, 당신은 목록에 보관하는을 원하지 않는 위한 좋은 이유가 있어야합니다. 목록으로 작업하는 것이 7234보다 훨씬 쉽습니다. data.frame s !. 너는 무엇을하려하고 있느냐.

+1

나는 항상 이것을 잊어 버렸고 여러 번 +1했습니다. –

+1

알아두면 좋은 +1 +1 – James

+0

감사합니다, Janmes and Simon. 그들은 많은 도움이된다. 나는이 목록을 직접 만들었지 만 제 동료들은 때로는 하나의 파일을 사용합니다. 그래서, 나는 그들과 그것을 나눕니다. –

1

이것은 마음에 들었지만 제임스는 이미 더 나은 답변을 게시했습니다. (본질적으로 내 것이 동일하지만 덜 멋지다) 그리고 나서 사이먼과 더 나아졌습니다. 난 그냥 실현 당신이 할 수있는 콘라드의 응답을 바탕으로

for (i in seq_along(L)) { 
    assign(names(L)[i], L[[i]], .GlobalEnv) 
} 

편집

: 그냥 완성도를 위해 내가 그것을 던져하지만 자신의 경고에주의를 기울이지 것이다

for (i in names(L)) { 
    assign(i, L[[i]], .GlobalEnv) 
} 

나는하지 않았다 for 루프가 비 인덱스를 사용할 수 있음을 압니다. 시원한.

+2

왜 이름 대신 인덱스를 반복합니까? 당신은 지표가 필요하지 않습니다. –

+0

@Knonrad 나는 내가 말했듯이 이것이 무엇인지 염두에 두었을뿐만 아니라 가장 약한 해결책이기도하다는 것을 완전히 동의한다. (당신이 말하는 것을 이해하는 한) 'lapply' 'for' 루프가 아닙니다. –

+1

@ 시몬은 제 편집을 보았습니다. 나는 그것을 깨달았습니다. –

관련 문제