R: If 语句函数 with apply

标签 r

我有以下数据框:

ID  Value
1    0
2   100
3   200
4    0

我想编写一个函数,如果“Value”列中的值等于 0,则生成“Hi”,否则生成“Bye”。结果应该是:

Answer
Hi
Bye
Bye
Hi

这是我试过的代码:

Type <- function(df){
  if(df$Value == 0)
    "Hi"
  else
    "Bye"
}

apply(X = df, MARGIN = 1, FUN = Type)

但是,我得到这个错误:

Error in Test_Customer$Pipe : $ operator is invalid for atomic vectors

有人可以帮我解决这个错误吗?谢谢!

最佳答案

apply() 用于矩阵,而不是 data.frames。它实际上将您的 data.frame 转换为矩阵。因此,当它运行时,它会将行或列作为简单的原子向量传递。它不子集 data.frames。您不能将 $ 与原子向量一起使用,因此会出现错误消息。

您的示例不需要apply()。一个简单的 ifelse() 就可以了

ifelse(df$Value==0, "Hi,"Bye")

ifelse() 函数被矢量化为一次处理一列数据。 (if 语句未向量化)。

关于R: If 语句函数 with apply,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30443113/

相关文章:

R中有向图上的随机游走

r - 如何在 quantmod 包中创建技术指标

r - 如何在 xts 中读取时间序列?

r - 将行附加到文件

r - 在Rmarkdown V2给定的DocumentClass

r - 如何使用循环为 R 中的多个网页抓取网站数据?

r - 核仁密度估算峰

r - 提取模式 "number/number"

r - 亚马逊产品 API 与 R

r - 生成N个随机整数,总和为R中的M