부분적으로 메모리 사용을 제한하고 싶기 때문에 정수 값을 가진 래스터를 만들고 싶습니다. R에서 패키지 래스터를 사용하고 있습니다. 정수 값을 가진 래스터를 만들 수있는 것처럼 보이지만 추출 된 값은 숫자입니다. 다음은 간단한 예입니다.정수 값이있는 래스터 R
library(raster)
# Create an empty raster
r <- raster(nrow=10,ncol=10)
# fill it with integer values
r[] <- 1:100
# It look like it's a integer raster
class(r[])
# but when you extract a value it's a numeric
class(r[1])
# if you extract it this way you get an integer
class(r[][1])
# But that's not always practical
누군가가이 경우 이유를 설명 할 수 있을까 어떻게 내가 r[1]
을 사용할 때 정수 값을 반환하는 래스터를받을 수 있나요?
정수 값과 관련된 항목을 찾을 수 없습니다. 범주 형 변수를 설명하는 a post이 있습니다. 그러나 범주 형 변수는 정수보다 많은 메모리를 사용합니다.
object.size(r)
object.size(ratify(r))
많은 감사! 마리
이 아주 잘 내 원래의 질문에 대한 대답, 감사합니다. 그러나 이제는 [행, 열]을 사용하면 숫자가 다시 나타납니다. 참조 :'class (r [1L, 1L])'. [셀] 인덱싱 대신 [row, col] 인덱싱을 사용하면 다른 클래스가 생성되는 이유는 무엇입니까? [행, 셀] 인덱싱을 사용하여 정수를 가져 오는 방법이 있습니까? –
@ MarieAuger-Methe - as.matrix (r) [1L, 1L] 또는 as (r [1,1], class (getValues (r, 1))와 같은 작업을 수행해야하는 것처럼 보입니다.) '를 호출하여 결과가 래스터의 요소와 동일한 유형인지 확인합니다. 'showMethods ("[[]'')를 수행하고 getMethod ("[ ","숫자 ","누락 "))'및'getMethod ("[ ", c (" "Raster", "숫자", "숫자"))'. 후자는'cellFromRowColCombine (r, 1L, 1L)'에서와 같이'cellFromRowColCombine()'을 호출하는데, 항상 정수 값을 반환합니다. 래스터 ::: doExtract()','.cellValues ()','.readCells' –
그리고 그 이후에 토끼 구멍을 계속 따라 가면''숫자 ''로의 초기 변환은 필연적으로 반환 된 결과. –