我正在尝试在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>")){
....
}
}
答案 0 :(得分:3)
虽然我个人更喜欢is.NA
或is.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
命令强制在该函数的该点评估该代码。我不认为它们是必要的,但取决于函数的其他功能,您可能需要确保它首先要求j
和k
而不是以后;否则,当代码首先需要知道j
和k
是什么时,将对其进行评估。
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>")) {
....
}
}