2017-05-17 3 views
2

길이가 다른 여러 데이터 프레임이 있고 각 데이터 프레임이있는 목록에서 가져온 상수를 포함하는 변수를 각각 추가하려고합니다. 해당 목록에서 다른 항목을 할당했습니다.목록에서 여러 값을 여러 데이터 프레임에 변수로 추가하는 방법 R

어떻게 이것을 루프 또는 lapply를 사용하여 자동화 할 수 있습니까? 출력은 내가 얻을

A = data.frame(v=c('x','x','y','y','z','z')) 
B = data.frame(v=c('x','y','z')) 
C = data.frame(v=c('x','x','x','y','y','y','z','z','z')) 

Mylist = list('a','b','c') 

# desired result: 
A$new <- Mylist[1] 
B$new <- Mylist[2] 
C$new <- Mylist[3] 

# failed attempt to use lapply: 
dfs <- lapply(list(A, B, C), function(d) { 
     d$new1 <- Mylist 
     d 
     }) 

이있다 :

> dfs 
[[1]] 
    v new new1 
1 x a a 
2 x a b 
3 y a c 
4 y a a 
5 z a b 
6 z a c 

[[2]] 
    v new new1 
1 x b a 
2 y b b 
3 z b c 

[[3]] 
    v new new1 
1 x c a 
2 x c b 
3 x c c 
4 y c a 
5 y c b 
6 y c c 
7 z c a 
8 z c b 
9 z c c 

어떤 도움은 매우 극명하게 될 것이다이 목록에서 모든 항목을 붙여 넣으로 분명 아래에 나의 애처로운 시도가 원하는 결과를 제공하지 않습니다 .

+1

당신은 샘플 출력을 제공하시기 바랍니다 수 있을까? – akash87

+0

당신이 원하는 출력을 얻을 수 있습니까? – akash87

+0

"new"라는 변수는 lapply를 사용하여 자동으로 실패한 결과 인 "new1"변수입니다. – Luise

답변

2

확인이 작동하는 경우 :

df_list <- list(A, B, C) 

dfs <- lapply(seq_along(df_list), function(i) { 
    df_list[[i]] <- cbind(df_list[[i]], Mylist[[i]]) 
}) 
+0

완벽한, 고마워! – Luise

+0

'apply' 패밀리는 항상 나에게 많은 것을 혼란스럽게합니다.이 솔루션을 직접 찾을 수는 없습니다. – TheBiro

+0

적용을 사용하지 않는 이유는 무엇입니까? 또한 루프를 사용해 보았지만 그 중 하나를 사용할 수 없었습니다. 게다가 루프를 사용하는 것이 전문가가 적용하는 솔루션보다 열등하다고 여겨졌습니다. – Luise

관련 문제