R功能;如果没有给出输入,请求它

时间:2015-05-11 01:11:14

标签: r

我正在尝试在R中编写一个函数,它将两个输入作为字符串。如果两个输入均未设置,则会询问输入,然后继续执行该功能。

Input < - function(j,k){
   if ((j==j)&&(k==k)){
      j <- readline(prompt="Enter Input 1: ")
      k <- readline(prompt="Enter Input 2: ")
      Input(j,k)
   }else if ((j=="<string here>")&&(k=="<string here>")){
      ....
   }
}

2 个答案:

答案 0 :(得分:3)

虽然我个人更喜欢is.NAis.NULL(如@Forrest的回答),但这是missing的另一种选择,对于现在从R开始的人来说可能看起来更简单。

Input <- function(j, k) {
  if (missing(j) | missing(k)){
    j <- readline(prompt="Enter Input 1: ")
    k <- readline(prompt="Enter Input 2: ")
    Input(j, k)
  } else if ((j == "<string here>") & (k == "<string here>")) {
    ....
  }
}

答案 1 :(得分:3)

我认为将readline代码作为参数也许是最简单的。 force命令强制在该函数的该点评估该代码。我不认为它们是必要的,但取决于函数的其他功能,您可能需要确保它首先要求jk而不是以后;否则,当代码首先需要知道jk是什么时,将对其进行评估。

Input <- function(j = readline(prompt="Enter Input 1: "),
                  k = readline(prompt="Enter Input 2: ")) {
    force(j)
    force(k)
    if ((j=="<string here>") && (k=="<string here>")) {
        ....
    }
}