2017-01-16 4 views
-1

R에서는 lapply 또는 map을 사용하여 $year 열을 목록의 여러 데이터 프레임에 추가 할 수 있습니까? 나는 그들을 녹이기 전에 데이터 프레임에 1 년을 갖고 싶습니다.함수를 데이터 프레임 목록에 매핑

years<-2004:2006 
names04<-c("green","q22","yellow") 
names05<-c("green","q27","yellow") 
names06<-c("green","q29","yellow") 
yr2004<-1:3 
yr2005<-6:8 
yr2006<-8:10 

year2004<-rbind(names04,yr2004) 
colnames(year2004)<-names04 
year2004 
year2005<-rbind(names05,yr2005) 
colnames(year2005)<-names05 
year2006<-rbind(names06,yr2006) 
colnames(year2006)<-names06 
year2004<-as.data.frame(year2004) 
year2005<-as.data.frame(year2005) 
year2006<-as.data.frame(year2006) 

## rewrite this section with lapply ## 
dfs<-list(year2004,year2005,year2006) 
year2004$year=2004 
year2005$year=2005 
year2006$year=2006 

library(purrr) 
map(cbind,dfs,years) 

#where 
years <- c(2004, 2005, 2006) 

map gives an error: .x is not a vector (closure)

+2

을 목록에 넣고 매핑하면 오류가 발생합니다 (예 : purrr(package)). 'Map (cbind, l1, year = years)'여기서 year는 c (2004, 5, 6)이고 l1은 df의 목록입니다. – Sotos

답변

2

당신이 목록에서 데이터 프레임을 넣어 후에는의 map 당신이 당신의 질문을 사용하고 있는지, 즉

dfs <- list(year2004, year2005, year2006) 
years <- c(2004, 2005, 2006) 

Map(cbind, dfs, year = years) 

#[[1]] 
#  green q22 yellow year 
#names04 green q22 yellow 2004 
#yr2004  1 2  3 2004 

#[[2]] 
#  green q27 yellow year 
#names05 green q27 yellow 2005 
#yr2005  6 7  8 2005 

#[[3]] 
#  green q29 yellow year 
#names06 green q29 yellow 2006 
#yr2006  8 9  10 2006 

참고 년과 벡터를 생성하고 Map을 사용할 수 있습니다 따라서

관련 문제