我有这个功能,我保存在数据库中。
runifrect <- function(n,a,b,z,d) {
else(print("Check if the x and y coordinates lie as such: 0<=a<b<=1 and 0<=z<d<=1"))}
现在我尝试使用旧函数来定义此函数:
plotrectpoints<- function(runifrect(n,a,b,z,d),a,b,z,d) {
但是我收到一个错误我不明白该函数有什么问题,我希望它适用于任意值n,a,b,z,d。
答案 0 :(得分:1)
当在R中定义函数时,它无法评估括号中的值。它创建了虚拟对象,在调用函数时获取值。这些虚拟对象名称遵循应用于所有变量名称的相同规则。由于您不能将变量名称包含在括号中,因此在定义函数时不能将其包含在参数列表中。
第一个功能定义
runifrect <- function(n,a,b,z,d) {
if(a<1&a>=0&b>0&b<=1&z<1&z>=0&d<=1&d>0) {
x <- runif(n,a,b)
y <- runif(n,z,d)
k<-c(x,y)
matrix(k,nrow = n,ncol = 2)}
else(print("Check if the x and y coordinates lie as such: 0<=a<b<=1 and 0<=z<d<=1"))}
第二个功能定义
plotrectpoints<- function(x,a,b,z,d) {
plot(x,
xlim=c(0,1),
ylim=c(0,1),
main = "Plot of rectangle and randomly generated points")
rect(a,z,b,d, border='red',lty='dotted')}
调用函数
plotrectpoints( runifrect(n,a,b,z,d), a,b,z,d)
答案 1 :(得分:0)
这是我在这个平台上的第一个答案。请多多包涵。
如果您的最终目标是从'plotrectpoints()'函数调用'runifrect()'函数,我们可以删除'runifrect(n,a,b,z,d)'参数并将其替换为' N”。 代码应如下所示:
runifrect <- function(n,a,b,z,d) {
if(a<1&a>=0&b>0&b<=1&z<1&z>=0&d<=1&d>0) {
x <- runif(n,a,b)
y <- runif(n,z,d)
k<-c(x,y)
matrix(k,nrow = n,ncol = 2)}
else(print("Check if the x and y coordinates lie as such: 0<=a<b<=1 and 0<=z<d<=1"))}
plotrectpoints<- function(n,a,b,z,d) {
plot(runifrect(n,a,b,z,d),
xlim=c(0,1),
ylim=c(0,1),
main = "Plot of rectangle and randomly generated points")
rect(a,z,b,d, border='red',lty='dotted')}
我已经使用以下参数进行测试。
plotrectpoints(10,0.5,0.8,0.3,0.7)
我还附上了上面生成的代码。 enter image description here如果上述代码符合您的要求,请与我们联系。