在R中的自定义函数中未执行的函数

时间:2019-05-02 08:08:09

标签: r function

在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))

enter image description here 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()

enter image description here

C),但是当函数中spplot之后出现任何内容时,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()

enter image description here

这是spplot的已知问题吗?是否有任何修复程序?

1 个答案:

答案 0 :(得分:0)

在这种情况下,我的最终解决方案只是在自定义函数中使用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()

首先打印此方法 enter image description here

并且-确实是-5秒后 enter image description here