2013-03-12 2 views
0

.csv 파일 목록이 있으며 그 중 처음 세 줄을 모두 삭제해야합니다. 한 번에 모든 것을 할 수있는 방법이 있습니까?일괄 처리 및 r에서 병합

'테스트'라는 이름의 파일에 대해 개별적으로 수행하는 코드는 다음과 같습니다 테스트 < -test [-c (1 : 3)]

내가 파일 목록에 대해 위의 줄을 실행하려면 I 파일명 : 파일명 : < - list.files (경로 = getwd())

위의 파일을 처리 한 후 cbind를 사용하여 하나의 파일을 만들고 싶습니다. 귀하의 도움을 크게 주시면 감사하겠습니다.

답변

1
csvlist <- lapply(csvnames, function(nam) read.csv(file=nam)) 
do.call(cbind, lapply(csvlist, "[", -c(1:3))) 

성공적인 입력 전략이 있었지만 지금은 오류를보고 했으므로 파일을 더 잘 설명해야합니다. 그것은 일 더 나은 처음 세 행을 제외합니다 :

csvlist <- lapply(csvnames, function(nam) read.csv(file=nam, header=FALSE, skip=3)) 
do.call(cbind, csvlist) # no longer need to remove since skip=3 did that. 

당신이 rbind 대신 cbind 싶지 않아 확신합니까?

+0

빠른 응답 @Dwin을 이용해 주셔서 감사합니다. data.frame (..., check.names = FALSE)에 오류가 있습니다 : 인수가 다른 행 수를 암시합니다 : – Bhante

+0

@Bhante 오류는 파일의 행 수가 다른 것보다 오류라고 생각합니다. 그러므로 오류가 발생했습니다. –

+0

맞습니다. 다른 수의 행에 대해 cbind 할 수 있습니까? 다른 수의 행을 가진 다른 데이터를 시도했습니다. 그것은 오류를주지 않고 작동합니다; 데이터는 행 수가 적은 열에 복제됩니다. 하지만이 제품에서는 작동하지 않습니다. – Bhante

2

다음과 같이 시도해 볼 수 있습니다.

result <- do.call(cbind, lapply(list.files(path = getwd()), function(n) read.csv(file=n , skip = 3))) 
+0

Nope. 같은 오류 메시지가 나타납니다. 제가 언급 한 것을 잊었습니다. 첫 번째 3 줄은 문장이고 4 줄은 머리말이기 때문에 read.csv에 header = FALSE를 추가해야했습니다. 그래서 처음 3 줄을 삭제해야했습니다. – Bhante