나는 약 30 개의 폴더가 있고 각 폴더에는 각각 다른 정보가 들어있는 여러 파일이 있습니다. 그 파일을 가져올 수 있어야 매트릭스의 이미지 플롯을 할 수 있습니다. 이미지 줄거리를하는 방법을 알고 있지만 모든 파일을 가져 오는 방법을 모르겠습니다. 각 폴더를 반복하고 각 파일에서 필요한 개별 파일을 가져 오는 방법이 있습니까? 이것은 매년 기상 데이터입니다. 그래서 내가 가지고있는 것은 매년 폴더이고 각 폴더에는 같은 변수가 들어 있습니다. 2005 폴더에서 온도 파일을 가져 와서 2006 폴더에서 온도 파일을 가져올 수있는 루프가 필요합니다. for 루프 나 적용 할 수 있습니까?여러 파일 가져 오기
답변
?list.dirs
보고 등 관련 기능 list.files
(모두 동일한 도움말 페이지에 설명되어 있습니다.)
먼저 목록 디렉토리 :
이> (dirs <- list.dirs("~/foo", recursive = FALSE))
[1] "/home/gavin/foo/bar1" "/home/gavin/foo/bar2"
그리고 이러한 이상 루프에서 파일 목록 현재 디렉토리와 목록으로 읽습니다. 어떤 기능
loadFiles <- function(dirs) {
fs <- list.files(dirs, full.names = TRUE, no.. = TRUE)
lapply(fs, read.table, ....)
}
fs <- lapply(dirs, loadFiles)
대체 read.table
이 파일을 읽을 read.table
(또는 관련 기능)을 추가로 인수 ....
를 교체해야합니다.
그런 다음 rapply
을 사용하여 fs
을 반복하여 플로팅 할 수 있습니다.
참고 재현 할만한 예제가 없으므로 위의 테스트를 모두 수행하지 않았습니다. 일부 파일과 폴더를 신속하게 테스트하여 테스트 할 수 있습니다.
> str(fs)
List of 2
$ :List of 3
..$ : num [1:5, 1:5] -1.65 -2.47 1.27 0.14 -0.22 ...
.. ..- attr(*, "dimnames")=List of 2
.. .. ..$ : chr [1:5] "1" "2" "3" "4" ...
.. .. ..$ : chr [1:5] "V1" "V2" "V3" "V4" ...
..$ : num [1:5, 1:5] 0.417 0.186 -2.452 -0.695 -1.216 ...
.. ..- attr(*, "dimnames")=List of 2
.. .. ..$ : chr [1:5] "1" "2" "3" "4" ...
.. .. ..$ : chr [1:5] "V1" "V2" "V3" "V4" ...
..$ : num [1:5, 1:5] 1.41924 -1.96918 0.38819 -0.41437 0.00718 ...
.. ..- attr(*, "dimnames")=List of 2
.. .. ..$ : chr [1:5] "1" "2" "3" "4" ...
.. .. ..$ : chr [1:5] "V1" "V2" "V3" "V4" ...
$ :List of 3
..$ : num [1:5, 1:5] -1.791 0.805 0.302 -0.383 -0.793 ...
.. ..- attr(*, "dimnames")=List of 2
.. .. ..$ : chr [1:5] "1" "2" "3" "4" ...
.. .. ..$ : chr [1:5] "V1" "V2" "V3" "V4" ...
..$ : num [1:5, 1:5] 0.305 0.353 -0.342 0.515 -0.375 ...
.. ..- attr(*, "dimnames")=List of 2
.. .. ..$ : chr [1:5] "1" "2" "3" "4" ...
.. .. ..$ : chr [1:5] "V1" "V2" "V3" "V4" ...
..$ : num [1:5, 1:5] -0.634 -0.776 0.517 -0.845 0.83 ...
.. ..- attr(*, "dimnames")=List of 2
.. .. ..$ : chr [1:5] "1" "2" "3" "4" ...
.. .. ..$ : chr [1:5] "V1" "V2" "V3" "V4" ...
내가 꽤 여기서 일하고 rapply()
을 얻는 방법 일,하지만하지 않은 : 여기
는
> list.dirs("~/foo", recursive = FALSE)
[1] "/home/gavin/foo/bar1" "/home/gavin/foo/bar2"
> list.files("~/foo/bar1")
[1] "file1.csv" "file2.csv" "file3.csv"
> list.files("~/foo/bar2")
[1] "file1.csv" "file2.csv" "file3.csv"
loadFiles <- function(dirs) {
fs <- list.files(dirs, full.names = TRUE, no.. = TRUE)
lapply(fs, function(x) data.matrix(read.csv(x, row.names = 1)))
}
fs <- lapply(list.dirs("~/foo", recursive = FALSE), loadFiles)
fs
가 지금과 같은 설정의 이런 종류의 예입니다
lapply(fs, function(x) lapply(x, image))
은 각각의 3 개의 매트릭스를 두 목록 각각.
창에각 파일이 10x10 매트릭스 인 경우 어떻게 배열에 넣을 수 있습니까? 귀하의 예제를 사용하여 각 file1.csv를 어떻게 행렬에 넣을 수 있습니까? 이것은 훌륭하게 작동했지만 각 매트릭스를 나열합니다. – user2113499
@ user2113499 새 질문을 시작할 수 있습니까? –
http://stackoverflow.com/questions/16180583/importing-mustiple-matricies-to-one-array-in-r 여기가 새로운 질문입니다. – user2113499
: 당신이 D:/data
에서 연간 폴더가 각 폴더 이름으로 파일이 가정
temperature.csv
# set the main working directory
setwd("D:/data")
# allocate a list for temperature matrices
list.temp.matrix = vector("list",length(list.dirs(recursive=FALSE)))
# iterate through each folder and load the file
i <- 1
for (dir.name in list.dirs(recursive=FALSE))
{
file.name <- paste0(dir.name, "/temperature.csv")
temp.matrix <- as.matrix(read.csv(file.name))
# update the list
list.temp.matrix[[i]] <- temp.matrix
i <- i + 1
# to avoid over-writing plots
x11()
image(temp.matrix)
}
가독성을 높이기 위해'\\\ '대신'/'를 사용할 수 있습니다. –
당신은'setwd()'내부를 의미합니까? – Nishanth
모든 것을 의미합니다 (Windows의 디렉토리 경로 용). –
현재로 데이터 프레임과 같이 모든 파일을 찾는다면 세션에서 이렇게 할 수 있습니다. temp라는 임시 디렉토리를 만들었습니다
> getwd()
[1] "/Users/homedir/tmp"
다른 디렉토리의 데이터가있는 디렉토리가 3 개 있습니다.
> dir()
[1] "data2005" "data2006" "data2007"
여기에는 일부 파일이 저장되어 있습니다 (예제의 용도와 동일합니다).예를 설정하는 디렉토리에이 파일을 저장
> ddfwind <- data.frame(x=runif(10), y=runif(10))
> ddfsun <- data.frame(x=runif(10), y=runif(10))
... 새로운 R 세션에서
> lapply(dir(), function(x) {
+ save(ddfwind, file=paste(x,"wind.dat",sep="/"))
+ save(ddfsun,file=paste(x,"sun.dat",sep="/"))
+ })
, 나는 디렉토리의 tmp에 가서 바람을 가지고있는 모든 파일을 가지고 모든 디렉토리에서 이름이
> fn.windData <- dir(pattern="wind.dat$", recursive=TRUE)
는 그럼 난 데이터 (F)의 끝 부분에 각각의 연도를 추가,이 파일을 반복하고 현재 R 세션에로드 할
lapply
을 사용 rame 객체입니다.
> lapply(fn.windData, function(x) {
+ L1 <- load(x)
+ assign(paste0(L1, gsub("[a-z./]", "", x)), get(L1), envir=.GlobalEnv)
+ })
> ls()
[1] "ddfwind2005" "ddfwind2006" "ddfwind2007" "fn.windData"
- 1. 여러 xml 파일 가져 오기
- 2. Grails에서 여러 파일 가져 오기
- 3. 여러 Excel 파일 가져 오기
- 4. /s3/가져 오기 로봇과 함께 여러 파일 가져 오기 가능
- 5. xampp mysql 데이터베이스에 여러 파일 가져 오기
- 6. 여러 파일 업로드 파일의 이름 가져 오기
- 7. CSS 가져 오기 또는 여러 CSS 파일
- 8. jquery로 여러 JSON 파일 가져 오기
- 9. 특정 폴더에서 여러 txt 파일 가져 오기
- 10. 자바 스크립트에서 여러 파일 가져 오기
- 11. SQL에서 여러 DBF 파일 가져 오기
- 12. 프리 로더에 여러 파일 크기 가져 오기
- 13. SSIS를 사용하여 여러 Excel 파일 가져 오기
- 14. classpath에서 디렉토리 가져 오기 (파일 가져 오기)
- 15. 파일 가져 오기/불러 오기
- 16. 여러 열이있는 여러 UTF-8 파일 가져 오기
- 17. 파일 네트워크에서 가져온 여러 .xlsx 파일 가져 오기
- 18. 여러 파일 업로드 필드에서 파일 이름 가져 오기
- 19. jquery를 사용하여 여러 파일 입력의 각 파일 내용 가져 오기
- 20. 파일 이름이 여러 개인 Excel 파일 가져 오기 R
- 21. XSLT에서 여러 가져 오기
- 22. 여러 항목 가져 오기
- 23. 올빼미 파일 가져 오기
- 24. 폴더에서 파일 가져 오기
- 25. 웹에서 파일 가져 오기
- 26. .m 파일 가져 오기
- 27. 파일 가져 오기
- 28. 폴더에서 파일 가져 오기
- 29. 파일 가져 오기
- 30. JAR에서 파일 가져 오기
폴더 및 파일 이름 형식을 표시 할 수 있습니까? (그들은 'temp2005','temp2006' 등과 같은 것입니까?) –
폴더 2005152, 2005182, 2005312, 2006152, 2006182 등등이 있습니다. 3 개월을 나타내는 폴더입니다. 각 폴더에 필요한 파일의 제목은 Cirrus_Reflective-_Mean_Daily.mat입니다. .mat 파일을 가져 오는 방법을 알고 있습니다. – user2113499