您好我有一个名为basic_plot()的函数,如果变量plot_function = TRUE将生成一个图,否则它返回NULL。它如下
plot_function = TRUE;
basic_plot = function() {
if(plot_function) {
par(mfrow = c(1,3))
plot(1:10,1:10,type = "o")
plot(10:1,1:10,type = "o")
plot(1:10,rep(5,10),type = "o")
} else {
NULL;
}
}
basic_plot();
应生成一个图表,其中树面板上填充了一些线条。此函数及其依赖的变量嵌入在其他一些代码中。我想知道的是,如果绘制了绘图,我怎么能告诉if()语句?例如
if(is.null(basic_plot())) {
print("I haven't drawn the plot yet")
} else {
print("I have drawn the plot and want to do more stuff.")
}
上述问题是如果函数绘制图形,则认为它为空。所以我永远都不会知道我何时画出这样的情节,例如
plot_function = TRUE;
is.null(basic_plot())
[1] TRUE
plot_function = FALSE;
is.null(basic_plot())
[1] TRUE
真正的应用程序是在一个闪亮的应用程序,但实际上认为这可能是一个通用的R查询。除了在basic_plot()函数中生成绘图之外,我无法返回任何内容(避免在绘制绘图后明显返回某些内容)。我希望有一个替代函数is.null(),比如有没有这个函数做什么?
干杯, ç
答案 0 :(得分:1)
简单回答:在函数中返回TRUE或FALSE:
basic_plot = function() {
if(plot_function) {
par(mfrow = c(1,3))
plot(1:10,1:10,type = "o")
plot(10:1,1:10,type = "o")
plot(1:10,rep(5,10),type = "o")
return(TRUE) # Now the function will plot, then return TRUE
} else {
return(FALSE) # Now the function will return FALSE instead of NULL
}
}
# We can make this a function too
check_plot <- function() {
if(basic_plot()) {
print("I have drawn the plot and want to do more stuff.")
} else {
print("I haven't drawn the plot yet")
}
}
# Now we can simply check:
plot_function <- TRUE
check_plot()
plot_function <- FALSE
check_plot()
# Note: it is generally bad practice to use global variables like this!
答案 1 :(得分:1)
在您的函数basic_plot
中,plot(1:10,rep(5,10),type = "o")
命令不会为函数指定任何内容,因此它仍然是NULL
例如,下面将TRUE
分配给您的功能。
plot_function = TRUE;
basic_plot = function() {
if(plot_function) {
par(mfrow = c(1,3))
plot(1:10,1:10,type = "o")
plot(10:1,1:10,type = "o")
plot(1:10,rep(5,10),type = "o")
TRUE
} else {
NULL;
}
}
basic_plot();
为了将图存储为对象,使用recordPlot()
:
myplot<-recordPlot()