首页 > 解决方案 > 函数未在 R 中的自定义函数中执行

问题描述

在 R 中使用spplot {sp}时,一切正常。但是,当我在函数中使用它时,spplot似乎什么都不做。

这是我打算做的一个例子:

A)这有效:

#load packages
require(gplots)
require(sp)
require(profvis)

#create spatial polygon with categories-attribute
grd <- GridTopology(c(1,1), c(1,1), c(10,10))
polys <- as.SpatialPolygons.GridTopology(grd)

myAttribute <- c(rep("A",12), rep("B",59), rep("C",29))
df <- data.frame(myAttribute=myAttribute, row.names=row.names(polys))
polygons(df) <- polys

#plot polygons by attribute
spplot(df["myAttribute"], col.regions=c("green","yellow","blue"),oma=c(4,4,4,4))

在此处输入图像描述 B)这也有效:

test <- function (){
textplot("text to appear", halign="right", mar=c(4,4,4,4), col="black")
pause(1)
spplot(df["myAttribute"], col.regions=c("green","yellow","blue"),oma=c(4,4,4,4))
}
test()

在此处输入图像描述

spplotC) 但是,当函数内后面有任何内容时,将spplot被跳过。在下一个情节出现之前,情节应该出现 5 秒钟。但是,情节根本没有绘制。

test <- function (){
textplot("text to appear", halign="right", mar=c(4,4,4,4), col="black")
pause(1)
spplot(df["myAttribute"], col.regions=c("green","yellow","blue"),oma=c(4,4,4,4))
pause(5)
plot(df)
}
test()

在此处输入图像描述

这是一个已知的问题spplot吗?有什么解决办法吗?

标签: rfunction

解决方案


在这种情况下,我的最终解决方案只是print()在自定义函数中使用:

test <- function (){
textplot("text to appear", halign="right", mar=c(4,4,4,4), col="black")
pause(1)
 print(spplot(df["myAttribute"], col.regions=c("green","yellow","blue"),oma=c(4,4,4,4)))
pause(5)
plot(df)
}
test()

这种方法首先印制 在此处输入图像描述

和 - 如inteded - 5秒后 在此处输入图像描述


推荐阅读