Apply函数返回“错误:$运算符对于原子向量无效”

哈里哈兰

我有一个名为“ bank”的数据框,如下所示,它有大约4万行

  age  job      salary marital education targeted default balance housing loan contact day month
  58 management 100000 married  tertiary      yes      no    2143     yes   no unknown   5   may

  duration campaign pdays previous poutcome response
       261        1    -1        0  unknown       no

我创建了以下函数,用于检查某些条件,然后返回一个值,该值作为新值添加到名为“ new”的新列下。

decide <- function(x){
  if(x$marital=='married' & x$salary > 60000 & x$housing=='yes'){
    return('yes') 
  }else if(x$marital=='single' & x$salary > 40000 & x$education=='tertiary'){
    return('yes') 
  }else{
    return('no') 
  }
}

然后,我将使用下面的循环在所有行上运行并导出新值

for(i in 1:nrow(bank)){
  person<-bank[i,]
  bank[i,'new']<-decide(person)
}

这满足了我的要求。

但是,当我尝试使用Apply函数而不是如下所示的for循环时,

bank$new1<-sapply(bank,decide)

它返回以下错误

错误:$运算符对原子向量无效

我编写的apply函数有什么问题,我可以要求您编写正确的for函数,如for循环吗?

咖啡因垃圾

尝试这样的事情:

decide <- function(x){
  if(x["cyl"]==6 & x["disp"] > 150){
    return('yes') 
  }else if(x["cyl"] == 8 & x["disp"] > 200){
    return('yes') 
  }else{
    return('no') 
  }
}

apply(mtcars, 1, decide)

稍微更优雅,更高效:

with(mtcars, ifelse(cyl == 6 & disp > 150, "yes", ifelse(cyl==8 & disp > 200, "no", "no")))

在这里,ifelse可以处理矢量,这意味着您不必遍历整个数据帧。

要了解您的错误,请注意apply-函数会将向量传递给该函数,并且不能使用$访问向量。看到:

vec <- c("a"=1, "b"=2)
vec
# a b 
# 1 2 
vec$a
# Error in vec$a : $ operator is invalid for atomic vectors
vec["a"]
# a 
# 1

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

运算符对于函数内部的原子向量无效

插入符:: train函数中的“错误:$运算符对于原子向量无效”

rfe() 函数错误:$ 运算符对原子向量无效

闪亮:updateSelectizeInput引发错误“ $运算符对于原子向量无效”

随机森林模型的Rcaret提取预测:错误:$运算符对于原子向量无效

ggplot2错误:$运算符对于原子向量无效

将函数应用于不同的数据子集时,对于3个子集中的1个,会出现“错误:$运算符对于原子向量无效”

plot.lm错误:$运算符对原子向量无效

model.matrix错误:$运算符对原子向量无效

方差分析:错误:$运算符对原子向量无效

错误$运算符对制作直方图R的原子向量无效

biglm - 错误:$ 运算符对原子向量无效

错误:$ 运算符对原子向量无效(r 闪亮 ggplot)

第一个函数中的错误:$运算符对原子向量无效

Speeglm $运算符对原子向量无效

尽管未使用原子向量或 $,但错误“$ 运算符对原子向量无效”

两个函数-一个很好,一个有错误:$运算符对原子向量无效

x $ j中的错误:$运算符对文本聚类中的原子向量无效

模糊匹配:避免出现“错误:$运算符对原子向量无效”

caret::predict 给出错误:$ 运算符对原子向量无效

HR.Rates $ y中的错误:$运算符对原子向量无效

使用 ggsave 时遇到“错误:$ 运算符对原子向量无效”

R fromJSON - $ 运算符对原子向量无效

SQL Server中的R:$运算符对原子向量无效

$ 运算符对闪亮的 R 中的原子向量无效

定义的“ tryCatch”函数运算符返回错误

尝试使用nil-coalescing运算符吗?对于抛出并返回可选函数的函数

==运算符的“无效分配”错误

一元运算符的无效参数-错误消息-负dplyr ::用向量选择