r - R dplyr 中的变异/转换(传递自定义函数)

标签 r dplyr

我正在使用新的软件包 dplyr 并面临一些困难。

mutate(df,isOdd=digit%%2) or transform(df,isOdd=digit%%2)

两者都完美地工作。

我问一个关于传递自定义方法的问题。

IsItOdd <- function(x) {
  if(x%%2==0)
     result<-"even"
  else
     result<-"odd"
  return(result)
}

transform(df,isOdd=IsItOdd(digit))

这不起作用,因为所有数字的整列都传递给函数。 有没有一种方法可以通过仅将一个单元格传递给函数而不是整个列来完成这项工作?

最佳答案

使用变换,您的函数必须对向量进行操作。您可以使用 ifelse 代替,它适用于向量:

 isOdd <- function(x){ ifelse(x %% 2 == 0, "even", "odd") }

或者,您可以使用 apply 函数之一将该函数应用于列中的每个值:

 isOdd <- function(x){
     sapply(x, function(x){
          if(x %% 2 == 0){
               return("even") 
          }else{
               return("odd") 
          }
     })}

关于r - R dplyr 中的变异/转换(传递自定义函数),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28579361/

相关文章:

R根据两个不同的参数创建多个列

r - 将 POSIXct 对象传递给函数返回数值向量

rChart 显示空白屏幕

r - 如何在 Amazon Linux 2 上安装更新版本的 R

r - 带条件的 Dplyr 过滤器

r - 如何在列表列上应用一个函数并在 dplyr 和 purrr 中返回另一个函数?

r - 如何提取 lmer 输出的固定效应部分的相关性

r - 在跨函数的 .names 参数中使用函数

r - 在purrr::map中相当于 `break`

r - tidyverse:有效绑定(bind)列表元素