функция в качестве аргумента функции в R - PullRequest
0 голосов
/ 01 мая 2018

У меня есть эта функция, которую я сохранил в базе данных.

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.

Ответы [ 2 ]

0 голосов
/ 01 мая 2018

Это мой первый ответ на этой платформе. Пожалуйста, потерпите меня.

Если ваша конечная цель - вызвать функцию runifrect () из функции plotrectpoints (), мы можем удалить параметр runifrect (n, a, b, z, d) и заменить его на ' п. Код должен выглядеть следующим образом:

    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)

Я также прикрепил график к сгенерированному выше коду. введите описание изображения здесь Пожалуйста, дайте мне знать, если вышеуказанный код - то, что вы ищете.

0 голосов
/ 01 мая 2018

Когда функция определена в 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...