R将用户定义的函数应用于数据框的选定列

R Apply user-defined function to selected columns of a dataframe

我正在尝试将用户定义的函数(MASS 包中的 fitdistr)应用于数据框的选定列,但我不断收到错误消息“'x' 必须是非空数字向量” .我希望使用 lapply() 函数或循环遍历选定的列。我该如何进行? 这是定义的函数:

SSD <- function(x,p){
      #fitting model through MSC10 
      SSD.params <- fitdistr(x,"log-normal")
      HC20 <- qlnorm(p, meanlog = SSD.params$estimate[1], sdlog = SSD.params$estimate[2])
      return(HC20)
    }

我的数据框看起来像那样

   A       B      C     D     
1  AB     1.5    3.1   8.7
2  CD     0.15   10.7 16.2
3  EF     3.6    5.4   4.7
4  GH     2.8    6.1   1.8

我有 1003 列,我想将该函数应用于列 4:1003(所有行)并将输出保存在具有 1 行和 1003 列的数据框中(qlnorm 函数的结果以上)。 关于如何最好地做到这一点有什么想法吗?

谢谢!

as.data.frame(t(unlist(lapply(df[,4:1003], SSD, p=p)))