我正在使用新的软件包 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/