2016-11-03 1 views
-1

R에서 각 파일을 내 디렉토리에 한 번에 하나씩 데이터 프레임으로 추출하고 간단한 교차 열 계산을 수행하고 싶습니다. 원본 파일 이름의 일부를 보존하면서 결과 데이터 프레임을 csv으로 내 보냅니다. Path/To/Directory 예를 들어 디렉토리의 모든 파일에 함수를 실행하고 파일 이름을 R에 보존하기

I가 다음과 같은 4 개 파일 :

Prot1-Combined_Scores.csv 
Prot2-Combined_Scores.csv 
Prot3-Combined_Scores.csv 
Prot4-Combined_Scores.csv 

각 파일이 같은 보이는 dataframe 있습니다

 V1 V2 V3 V4  V5  V6  V7 
1 CHEM001 0.000 0 0 0.684255 0.91599 0.671794 
2 CHEM002 0.048 4 1   0 0.953549 0.691595 
3 CHEM003 0.287 1 0 0.011915 0.970648 0.854309 
4 CHEM004 0.298 0 2 0.136784 0.984207 0.86979 
5 CHEM005 0.000 1 0 0.578534 0.995675 0.695794 

내가 만들고 싶어를 열 V8 그, 대한 예를 들어, (V2+V3+V6+V7)^2 + 2*V4 + V5/3을 계산합니다.

마지막으로 나는 등 원래의 파일 이름의 Prot1 부분을 보존하는 이름을 가진 csv 파일과 같은 Prot1-Final_Score.csvProt2, Prot3에 대해 동일하게 최종 dataframe을 저장, 그리고 것입니다.

저는 R에 익숙하지 않고 lapply은 디렉토리의 모든 파일에서 함수를 실행하는 데 유용하지만 특별히 언급 한 계산을 lapply에 통합하고 파일 이름에서 필요한 문자열을 추출하는 데 도움이 필요하다고 읽었습니다. 나중에 내보낼 수 있습니다.

+0

지금까지 무엇을 했습니까? – HubertL

답변

1

희망이 도움이됩니다. 더 잘 배울 수 있도록 노력이나 접근법을 공유하십시오!

path="Path/To/Directory/" 
x=list.files(path = path, pattern = ".csv") 
final_pathname = paste0(path, x) 

L=lapply(seq_along(final_pathname), abc) 

abc <- function(i){ 
    df = read.csv(final_pathname[i]) 
    df$V8 = (df$V2+df$V3+df$V6+df$V7)^2 + 2*df$V4 + df$V5/3) 
    write.csv(df,file = paste0(path,paste0(unlist(strsplit(x[i],".csv")) 
            ,"-Final_copy"),".csv")) 
} 
관련 문제