【问题标题】:"Or" operator is not working as expected in R“或”运算符在 R 中未按预期工作
【发布时间】:2015-09-06 17:12:18
【问题描述】:

我正在尝试创建如下函数:

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)

【问题讨论】:

  • 您缺少一个终端括号。记得关闭 if 语句。并且函数区分大小写is.NA 不是 R 函数。
  • 对不起,不平衡的括号是错误的。
  • 我也试过这个:remove_loan_apl 1500000 ){x
  • if( x == 0 || is.na(x)) {x &lt;- 1e5} 应该没问题。但是这个问题没有提到这个函数应该做什么。如果您提供示例数据输入和输出的示例,则更容易提供更详细的帮助。
  • 正如@PierreLafortune 所说,is.NA 不是 R 函数。

标签: r if-statement logical-operators


【解决方案1】:

也许我能猜到你在做什么。

Pierre Lafortune 建议的这个函数

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

应该可以。

我认为您正在尝试做的是将混合值 non-na,0 和 NA 的完整向量传递给 x。如果您传递一个完整的向量,则此函数将不起作用,并将按原样返回您的向量。

例如。

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

如果你愿意

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

【讨论】:

  • 应该也可以。使用mapply(remove_loan_apl,x)
猜你喜欢
  • 2015-05-11
  • 2019-06-20
  • 2021-04-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-29
  • 2021-04-30
相关资源
最近更新 更多