"或"运营商在R中没有按预期工作

时间:2015-09-06 17:12:19

标签: 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)
}

但它不起作用。申请或缺失值的正确方法是什么? 我希望函数将x的值替换为100000,其中它是0或缺少(NA)

1 个答案:

答案 0 :(得分:1)

可能我可以猜到你在做什么。

Pierre Lafortune建议的这个功能

@DataProvider

应该有用。

我认为你要做的是将非na,0和NA的混合值的完整向量传递给x。如果你传递一个完整的向量,这个函数将不起作用,并将返回你的向量。

例如。

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

如果你愿意的话

x=c(1,NA,2,3,NA,4,0,5)

它将按原样返回x向量。

输出:

remove_loan_apl(x)

您必须使用lapply或sapply将函数应用于向量的每个值。

1 NA  2  3 NA  4  0  5

这将根据需要提供输出:

sapply(x,remove_loan_apl)