我对R很新,我正在尝试创建一个具有一定地理输出的函数。我试图包含一些if / else语句来设置某些参数的默认值,如地图标题,但反复遇到相同的问题。其他人也有同样的问题,但是他们的询问对我没有帮助。
下面是我的代码的简化版本,以及我遇到的错误。
my_function <- function(x, y, map.title, a, ... ){
neighbours <- spdep::poly2nb(x, queen=T, snap=T)
print("neighbours defined")
local <- spdep::localmoran(y, listw=nb2listw(neighbours, style="W"))
moran_map <- x
moran_map@data <- cbind(x@data, local)
if(map.title = NULL) {
seg_map <- tmap::tm_shape(moran_map) +
tm_fill(col = "Ii",
style = "quantile",
title = "Local Moran's I Statistic") +
tm_layout(title = "Good Maps Have Titles")
return(map)
} else {
seg_map <- tmap::tm_shape(moran_map) +
tm_fill(col = 'Ii',
style = 'quantile',
title = "Local Moran's I Statistic",
palette = a) +
tm_layout(title = map.title)
return(map)
}
}
我一直收到以下错误。
>Error: no function to return from, jumping to top level
> }
Error: unexpected '}' in " }"
> }
Error: unexpected '}' in " }"
有谁知道我做错了什么,以及我如何解决这个问题?
非常感谢!
答案 0 :(得分:0)
在你收到这些错误之前,你有一个错误:
+ if(map.title = NULL) {
Error: unexpected '=' in:
" moran_map@data <- cbind(x@data, local)
if(map.title ="
您不能在=
测试中使用单个if
。通常,您使用==
来测试值的相等性,但NULL
是特殊的,所以在这里您需要is.null(map.title)
(正如Parfait所说)。
当R在该语句中发现错误时,它停止了函数定义并重新开始;后来的陈述没有意义所以你得到了那些错误。