开始使用免费开始使用

ifelse()

一个非常实用的函数是 ifelse()。它可以用一行代码写出 if 语句,更厉害的是,它还能作用于整个向量!

假设您有一个股票价格向量。若您想在每次 apple > 110 时返回 "Buy!",否则返回 "Do nothing!",该怎么办?普通的 if 语句不足以解决这个问题。不过,使用 ifelse() 您可以这样做:

apple
[1] 109.49 109.90 109.11 109.95 111.03 112.12

ifelse(test = apple > 110, yes = "Buy!", no = "Do nothing!")
[1] "Do nothing!" "Do nothing!" "Do nothing!" "Do nothing!" "Buy!"       
[6] "Buy!"

ifelse() 会对 test 求值以得到逻辑向量,其中为 TRUE 的位置会用 yes 中的值替换。类似地,FALSE 会用 no 替换。

stocks 数据框已为您准备好。

本练习是课程的一部分

R 金融中级

查看课程

练习说明

  • 使用 ifelse() 测试 micr 是否高于 60 且低于 62。若为真返回 1,否则返回 0。将结果作为 micr_buy 列添加到 stocks
  • 使用 ifelse() 测试 apple 是否大于 117。若为 TRUE,返回 date 列;否则返回 NA
  • 打印 stocks。您会看到 date 变成了数值!ifelse() 在返回前会去掉日期的「属性」,因此它变成了数值。
  • apple_date 列的 class() 设为 "Date"
  • 再次打印 stocks

交互式实操练习

通过完成这段示例代码来试试这个练习。

# Microsoft test
stocks$micr_buy <- ifelse(test = ___, yes = ___, no = ___)

# Apple test
stocks$apple_date <- ifelse(test = ___, yes = stocks$date, no = NA)

# Print stocks
___

# Change the class() of apple_date.
class(___) <- ___

# Print stocks again
___
编辑并运行代码