2013-08-25 6 views
1

변수 목록을 사용하여 R에서 데이터 프레임을 다운로드하고 만듭니다.이 목록을 사용하여 각 데이터 프레임의 다른 열을 변경할 수는 있지만 변수 목록을 사용하여 특정 열을 호출하는 데 문제가 있습니다.목록을 사용하여 여러 데이터 프레임의 열을 변경 R

countries= c("USA","CHN") 

for (i in 1:length(countries)){ 
    download.file(url[i],savedata[i]) 
    assign(countries[i],xmlToDataFrame(savedata[i])) 
} 

는 이제 다음과 같이 dataframes 있습니다

head(USA) 
     indicator  country date   value decimal 
1 GDP (current US$) United States 2012 15684800000000  0 
2 GDP (current US$) United States 2011 14991300000000  0 
3 GDP (current US$) United States 2010 14419400000000  0 
4 GDP (current US$) United States 2009 13898300000000  0 
5 GDP (current US$) United States 2008 14219300000000  0 
6 GDP (current US$) United States 2007 13961800000000  0 

을 그리고 통과와 같은 단위를 as.date() 기능 날짜 열을 포맷하거나 변경하는 등 여러 가지 변화를하고 싶습니다 값의 열의 두 데이터 프레임 (또는 내가 국가의 길이를 늘리는 경우에 임의의 숫자) 동일하게 할 수 싶습니다.

그러나 내가 이것을 시도 할 때마다 해당 국가의 국가 목록에서 ge까지 각 데이터 프레임의 '내부'. 내 초기 추측은 루프에서 같은 것을 넣어했다 :

assign(paste(countries[i],"date",sep="$"), 
    as.date(get(paste(countries[i],"date",sep="$"))) 

는 특히, 내가 올바른 이름 paste(countries[i],"date",sep="$") 인쇄를 특정 컬럼 날짜를 얻으려고, 어떻게 아냐 경우 어떻게 get(paste(countries[i])) 작품에 대해 혼란스러워 ,하지만 난 단지 하나의 열을 조작하고 싶지 않을 것 같습니다.

또한 루프는이 작업을 수행하는 이상적인 방법이 아니라는 것을 알고 있지만 적용 기능과 동일한 문제가 발생했습니다. 경험 부족으로 인해 문제가 발생할 가능성이 높습니다. 루프에서 또는 아웃을 사용하는 방법에 대한 제안은 많은 도움이됩니다. 슈퍼 R 초보자, 그냥 배우려고. 또한, 다른 곳에서 명확한 설명/답변을 찾았 으면 저를 향해 나를 가리켜 주시면 감사하겠습니다.

+0

당신은 쉽게 평평하게 찾을 수 있습니다 구조 및 모든 데이터를 단일 data.frame에 넣으십시오. @Ferdinand의 데이터 프레임 목록을 사용하여 아래의 응답을 'Reduce (rbind, mylist)'명령을 사용하여 데이터 프레임에 모두 쌓을 수 있습니다. 하나의 데이터 프레임 만 있으면 포맷 작업이 훨씬 쉬워집니다. –

답변

1

목록을 사용하면 훨씬 쉽습니다. 빈 하나 시작

mylist[[i]] <- xmlToDataFrame(savedata[i]) 

그런 다음 예를 들어, 당신의 서식을 수행하는 기능을합니다 :

f <- function(df){ 
    within(df, date <- as.date(date)) 
} 
이에

assign(countries[i],xmlToDataFrame(savedata[i])) 

:

mylist = list() 

다음이 변경

그리고를 사용하십시오. 441,모든 dataframes에 적용 :

mylist2 <- lapply(mylist, f) 

당신이 이름으로 dataframes에 액세스하려면이를 사용

names(mylist2) <- countries 

그리고 시험 :

mylist2[["USA"]] 
+0

목록을 사용하고 함수를 적용하는 방법을 이해하고 내부 함수에주의를 기울이는 데 매우 유익하고 유익했습니다.결국 나는 그것에 문제가 있다고 생각했지만 그것은 혼란 스러웠습니다. 이것은 잘 작동하고 교육적이었습니다. 고맙습니다. – DaedalusBloom

관련 문제