将用户定义的函数应用于数据框的每个元素

时间:2016-04-08 06:12:48

标签: r dataframe sapply

我无法在R中找到这个简单问题的解决方案。如何在没有循环的情况下将“用户定义”函数应用于数据帧的每个元素(单元格)?

    func <- function(cell){
        if (cell==1) return("hello")
        else return ("bye")
    }

请不要试图说你可以在数据框中用“hello”替换1。它只是标量上用户定义函数的一个例子,但我们可以将它应用于每个元素。该函数可能是几百行代码。 我尝试了mapply和sapply,但没有工作。显然,我错过了一些东西。提前谢谢。

1 个答案:

答案 0 :(得分:0)

您需要apply

见:

func <- function(cell){
  if (cell==1) return("hello")
  else return ("bye")
}

df=data.frame(x=1:5,y=-2:2)
apply(df,c(1,2),func)

     x       y      
[1,] "hello" "bye"  
[2,] "bye"   "bye"  
[3,] "bye"   "bye"  
[4,] "bye"   "hello"
[5,] "bye"   "bye"