&引用;或;操作员在R中未按预期工作

&引用;或;操作员在R中未按预期工作,r,if-statement,logical-operators,R,If Statement,Logical Operators,我正在尝试创建一个函数,如下所示: remove_loan_apl <- function(x) { if((x==0) || (is.NA(x))) {x <- 100000} return(x) } remove_loan_apl <- function(x) { if((x==0) || (x is NA)) {x <- 100000} return(x) } remove\u loan\u apl也许我能猜到你在做什么 这是皮埃尔·拉福琼

我正在尝试创建一个函数,如下所示:

remove_loan_apl <- function(x) {
  if((x==0) || (is.NA(x))) {x <- 100000} 
   return(x)
}
remove_loan_apl <- function(x) {
  if((x==0) || (x is NA)) {x <- 100000} 
   return(x)
}

remove\u loan\u apl也许我能猜到你在做什么

这是皮埃尔·拉福琼建议的功能

remove_loan_apl <- function(x) {
    if((x==0) || (is.na(x))) {x <- 100000} 
    return(x)
}
如果你愿意

remove_loan_apl(x)
它将按原样返回x向量

输出:

1 NA  2  3 NA  4  0  5
你必须用lapply或sapply将你的函数应用于向量的每一个值

sapply(x,remove_loan_apl)
这将提供所需的输出:

1 100000      2      3 100000      4 100000      5

你错过了一个终点站。记住关闭if语句。函数是区分大小写的。
is.NA
不是R函数。抱歉,不平衡的括号是错误的。我也试过这样做:如果(x==0 | | | is.NA(x)){x正如@pierrelaffortune所说,
is.NA
不是R函数。这应该也能用。
mapply(remove | loan | u apl,x)
1 100000      2      3 100000      4 100000      5