尝试在 R 中应用创建的函数

Try to apply a created function in R

我正在努力学习如何使用函数和应用。所以首先我想了解两者是如何工作的。

这是一个基本示例。我正在创建一个函数,该函数根据列的值使用一种算法或另一种算法:

datos = data.frame(replicate(5,sample(0:10,10,rep=TRUE)))

calculo <- function(variable) {
  
  aa = variable * 2
  
  if (variable < 5) {
    aa = 0
  }
  
  return(aa)
}

datos$Y1 = apply(datos, 1, FUN=function(x) calculo(datos$X1))

我在这个例子中的简单想法是:

当我应用它时,我认为该条件同时应用于 datos$X1 中的所有值,而不是逐行应用。所以它并没有像我想的那样工作。

有没有办法逐行应用条件?

谢谢

只需使用

datos$Y1 <- calculo(datos$X1)

您还可以稍微精简一下您的功能(不确定哪个版本更快):

calculo <- function(variable) {
  
  aa <- ifelse(variable < 5, 0, variable * 2)
  return(aa)
}

这给出(由于 datos 生成的随机性,您可能看起来有所不同:

   X1 X2 X3 X4 X5 Y1
1   5  0  3  8  9 10
2   3  6  1  3  3  0
3   6  2  5  2  5 12
4   8  0  9  8  2 16
5   1  6 10  5  0  0
6   6  1  7  9 10 12
7   0  0 10  1 10  0
8  10  8  8  1  4 20
9   9  0  6  5  3 18
10  0  9  0  5  4  0

更新:我在 tidyverse 中的首选方式。

library(tidyverse)
datos <- datos %>%
  mutate(Y1 = if_else(X1 < 5, 0, X1 * 2))