2014-10-14 2 views
2

으로 읽는 것은 매우 신기하며 벡터를 사용하여 여러 csv 파일을 읽는 방법을 알아 내려고합니다. 내가 읽고 싶은 파일을 가지고 벡터를 만들고 싶습니다. 데이터를 저장할 데이터 프레임의 이름을 가진 벡터와 그 둘을 사용하여 여러 파일을 처리하는 함수를 만들고 싶습니다. 내가 오류 다음 얻을벡터를 사용하여 여러 csv 파일을 r

filevar<-c("study_data_raw.csv","study_data_cleaned.csv") 
dfs<-c("study_data_raw","study_data_cleaned") 
myfunc<-function(x,y) { 
    y<- read.csv(file.path("C:/study_data",x)) 
    } 
myfunc(filevar,dfs) 

"파일 오류 (파일을"RT ") : 여기에 내가 노력하고있어 코드는 유효하지 않은 '설명'인수"

내 훈련받지 않은 눈이를 찾을 수 없습니다 논리적 인 문제이며보다 숙련 된 프로그래머의 안내를 환영합니다.

+0

이미 Stackoverflow에 대한 많은 답변이 있습니다. –

+0

'header = TRUE, sep = ''를 대체하십시오.'lapply (filevar, function (x) read.csv (file.path ("C :/study_data", x), header = TRUE, sep = "" '데이터 세트를 확인한 후 – akrun

답변

0

루프를 사용하는 사람에게 R을 처음 사용하는 사람에게 말하기는 싫지만, 여기가 최선의 선택입니다.

filevar<-c("study_data_raw.csv","study_data_cleaned.csv") 
fileData <- list() 
for(fileNum in 1:length(fileVar)) 
{ 
    fileData[[fileNum]] <- read.csv(file = paste0("C:/study_data/",filevar[fileNum])) 
} 

(적용 기능 그들에 루프가 있습니다, 그래서 그들은하지 빠르게, 그리고 그들이 디버그 열심히/덜 읽을 수있는) 당신이 참조 할 수 있기 때문에

나는이 방법을 권 해드립니다 수치 적으로 파일들. 당신이 그 (것)라는 이름의 한을 원하는 경우,이

filevar<-c("study_data_raw.csv","study_data_cleaned.csv") 
dfs<-c("study_data_raw","study_data_cleaned") 
for(fileNum in 1:length(fileVar)) 
{ 
    assign(dfs[fileNum],read.csv(file = paste0("C:/study_data/",filevar[fileNum]))) 
} 

보너스 포인트를 수행 를 또한 추가 가독성을 향상하기 때문에 내가 배관 시작하기 권 해드립니다 모든 R 사용자에 대해.

library(magrittr) # or install.packages("magrittr") first 
library(dplyr) # or install.packages("dplyr") first 

filevar<-c("study_data_raw.csv","study_data_cleaned.csv") 
dfs<-c("study_data_raw","study_data_cleaned") 
for(fileNum in 1:length(fileVar)) 
{ 
    paste0("C:/study_data/",filevar[fileNum]) %>% 
    readcsv() %>% 
    assign(dfs[fileNum]) 
} 
+1

왜? 누군가'R '에 익숙하지 않다고해서 프로그래밍에 익숙하지 않다는 것을 의미하지 않으며, for-loops는 모든 소프트웨어 도구와 같은 유비쿼터스 개념입니다. –

+1

예, 루프가 유익하고 종종 새로운 R 프로그래머가 과용하기 때문에 루프를 사용하는 대신 벡터 라이 제이션 습관을 얻는 것이 좋습니다. 즉, csvs를 읽는 것은 실제로는 벡터화 될 수 없기 때문에 내 의견에는별로 중요하지 않다고 생각합니다. R에서 가능한 한 자주 루프를 사용해야한다는 사실에주의를 기울이는 것을 제외하고는 이것은 정상적으로 말하지 않고 진행됩니다. 하지만 그는 새로운 사용 이니까 나는 그것을 언급했을 것입니다. – hedgedandlevered

+1

이것은 OP가 요구 한 것을하지 않습니다. 그들이리스트를 원한다면'lapply'가 더 좋은 해결책이 될 것입니다. – GSee