나중에 검색하기 위해 디스크에 저장하려는 일년에 몇 가지 변수가 있습니다. 예 :변수를 목록에 넣은 다음 다시 가져 오기
Yr.data <- list()
#Year 1
a <- "Year 1"
b <- 72
c <- matrix(1, nrow=2, ncol=2)
Yr.data[[1]] <- list(a=a, b=b, c=c)
#Year 2
a <- "Year 2"
b <- 99
c <- matrix(3, nrow=2, ncol=2)
Yr.data[[2]] <- list(a=a, b=b, c=c)
save (Yr.data, file="Yr_data.Rda")
rm(a,b,c,Yr.data)
그럼 나중에 내가 (예에서 두 번째 년) 1 년에 대해, 다시 이러한 변수를 얻으려면 :
load("Yr_data.Rda")
# Here I want to "unlist" Yr.data[[2]], so I get a, b, c as separate variables
print(b)
[1] 99
c <- Yr.data[[2]]$C# I know this is a way to do it, but I want it automatically
이 할 수있는 현명한 방법이 있나요? 둘 다 a = a 등을 쓰지 않고 변수를 저장하고 특히 변수를 지정하지 않고 저장하십시오. 1 년에 저장하고자하는 실제 데이터는 훨씬 더 복잡합니다 (공간 객체, 데이터 프레임 등). 나는 해결책이 간단하다고 생각하지만, 어쨌든 나는 그것을 발견하는데 집착했다 ...
고마워.
/크리스
업데이트 : 감사합니다 도움이 노력을 위해, 내가 정말 감사드립니다. 문제 설명이 충분히 명확하지 않다는 것을 알고 있습니다. 각 연도 (및 측정 포인트)에 대해 예를 들어 변수 b 및 c가 있습니다 (그러나 연간 및 측정 포인트마다 다른 값이 있음). 나중의 처리를 위해 디스크에 저장해야하는이 값들. b는 예를 들어 list() 또는 SpatialPolygonsDataFrame [] (데이터베이스에 저장하는 방법을 모르는 경우) 일 수 있습니다. 변수 b와 c를 처리 할 다른 R- 스크립트가 있습니다. 복잡성은 "b"를 같은 파일에 여러 번 저장하려고합니다. 그래서 나는이 목록에 넣어 스마트이라고 생각 :이 코드를 않습니다,하지만 난 나중에 예를 들어 D <에 대한 (이상의 변수를 추가 할 경우에 그것을 할 수있는보다 강력한 방법을 배울 기대했다
Yr.data <- list()
b <- 17
Yr.data[[1]] <- list(b=b)
b <- 42
Yr.data[[2]] <- list(b=b)
b <- Yr.data[[1]]$b # b becomes 17
# Or this, in case I need to analyze the second year
b <- Yr.data[[2]]$b # b becomes 42
- 34 첫 해 및 d < - 43 두 번째 해).
업데이트 2 : 명확하게 설명하지 못해 죄송합니다. 나는 너의 시간을 낭비하고 싶지 않아. 마지막으로 한 번 해보도록하겠습니다.
입력 변수 a, b, c를 처리하는 R 스크립트가 있습니다. 필자의 예제에서 이러한 변수는 간단하지만 실제로는 sp :: SpatialPolygonsDataFrame과 같은 더 복잡한 객체이므로 데이터 프레임에 넣을 수 없습니다. 때로는 한 세트의 변수를 처리해야하는 경우가 있습니다. 나는 그것이 좋은 목록에 목록과 같은 서로 다른 세트를 저장하는 생각, 그래서 내가 먼저 세트를 실행하려는 경우, 나는리스트의 목록의 첫 번째 목록을 선택
Year.I.need.to.analyze <- 1
getAllVariablesInList(Yr.data[[Year.I.need.to.analyze ]]) # creates a, b, c
result.I.want <- b * c
을 그리고 난을 분석해야 할 때 두 번째 해에는 "Year.I.need.to.analyze"를 2로 변경하고 스크립트를 다시 실행해야합니다. 파일 이름과 디렉토리에 "greping"과 "paste() : ing"을 피하기 위해 별도의 .Rda 파일에 각 세트를 저장하지 말고 어느 파일이 필요한지 계속 추적하는 것을 피하는 것이 좋습니다.
나는 예제가 간단하다는 것을 알고 있지만, 실제 스크립트는 몇 년 사이에 건너 뛰고 그 사이에 플롯을 만들고 내 보내야합니다. 나는 모든 것을 강력한 방식으로 자동화하기를 바랬다. 혼란에 다시 한 번 죄송합니다. 이 문제를 해결하기 위해 노력한 후, 나는 너무 피곤해서 문제를 최선의 방법으로 설명 할 수 없음을 깨달았다.
'저장 (A, B, C, 파일 = "Yr1_data.Rda") ', 등? 나는 네가 뭘하고 있는지 말할 수 없다. – joran
죄송합니다. 나는 1 년 동안 모든 파일을 하나의 파일로 만들고자하는 강력한 코드 때문에 언급해야합니다. 나는 오랜 세월 동안 데이터를 저장해야합니다. – Chris
아마도 목록 대신 환경을 사용 하겠지만 별 다를 것이 없습니다. 예 : 'e <- as.environment (Yr.data, recursive = FALSE); ls (e); e $ c; with (e, b); get ("c", pos = e)' – GSee