래스터 레이어의 샘플 변형을 만드는 기능이 있습니다. 이 함수는 RasterStack
또는 RasterBrick
을 사용하고 레이어 당 하나의 변형이있는 목록을 반환합니다. 그것이 .GlobalEnv
에 장전 할 때이 기능은 잘 작동하지만 패키지에서 사용할 때를 말한다 오류 얻을 :
Error in (function (classes, fdef, mtable) : unable to find an inherited method for function ‘nlayers’ for signature ‘"numeric"’
역 추적 뭔가 내가 rasterToPoints
기능을 사용하는 줄을 잘못 가고, 또한되었다 말했다 내가 을 dlist
에 사용하는 줄에서, 그러나 왜 nlayers()
이 전혀 사용되지 않고 있는지, 또는 패키지에서 함수를 사용할 때만 문제가되는 이유를 알지 못합니다.함수는 전역 env에서는 객체로 작동하지만 패키지에서는 작동하지 않습니다.
#' Create sample variograms of CHIRPS data
#'
#' @name sampvar-chrp
#' @title Create sample variograms of CHIRPS data
#'
#' @param data RasterStack of CHIRPS images
#' @return List of sample variograms
#' @examples
#' data(chrprf)
#' sampvar_chrp(chrprf)
#' @export
sampvar_chrp <- function(data) {
dlist <- as.list(data)
spdf <- lapply(dlist, function(x){
names(x) <- "rain"
pts <- rasterToPoints(x, spatial = TRUE)
})
rsamp <- lapply(spdf, function(x){
s <- x[sample(1:length(x), size = 150), ]
})
chrp_vario <- lapply(rsamp, function(x){
v <- variogram(object = rain ~ 1, data = x)
})
return(chrp_vario)
}
내가 어떤 조언을 주셔서 감사합니다 :
여기 roxygen2 주석이있는 기능입니다!
편집 : 문제의 적어도 일부는 data
이 패키지에서 함수를 실행할 때 목록으로 성공적으로 변환되지 않는다고 생각합니다. 나는 기능을 수정하고, 다시 문서화하고, 재설치하고, "error"
print 문을 얻었다. 따라서 as.list(data)
은 글로벌 환경에서 작동하지만 내 패키지에서 작동하지 않는 것 같습니다. 당신이 raster::rasterToPoints
보면
#' Create sample variograms of CHIRPS data
#'
#' @name sampvar_chrp
#' @title Create sample variograms of CHIRPS data
#'
#' @param data RasterStack of CHIRPS images
#' @return List of sample variograms
#' @importFrom raster rasterToPoints
#' @examples
#' data(chrprf)
#' sampvar_chrp(chrprf)
#' @export
sampvar_chrp <- function(data) {
dlist <- as.list(data)
if (is.list(dlist) == TRUE) {
spdf <- lapply(dlist, function(x){
names(x) <- "rain"
pts <- rasterToPoints(x, spatial = TRUE)
})
rsamp <- lapply(spdf, function(x){
s <- x[sample(1:length(x), size = 150), ]
})
chrp_vario <- lapply(rsamp, function(x){
v <- variogram(object = rain ~ 1, data = x)
})
return(chrp_vario)
} else { print("error")}
}
'rasterToPoints'가 다른 패키지에서 온 것이라면, 그 함수/패키지를 가져 왔습니까? 공유 한 항목에는 가져 오기 지시문이 없습니다. – joran
@ joran 네, 이것은 다른 패키지 인'raster' 패키지에서 가져온 것입니다. 그리고 필자는 DESCRIPTION의'Imports' 섹션에서 이것을 설정했습니다. 나는 또한 그 라인을'raster :: rasterToPoints'로 변경하고 패키지를 다시 설치하거나 설치하려고했지만 아무런 효과가 없었다. 같은 오류가 발생했다. – DentalPegasus
'DESCRIPTION'의'Imports :'섹션 외에'NAMESPACE'에'importFrom (raster, rasterToPoints)'또는'import (raster)'가 있습니까? – r2evans