【发布时间】:2021-09-14 08:21:20
【问题描述】:
我正在尝试将用户定义的函数(来自 MASS 包的 fitdistr)应用于数据帧的选定列,但我不断收到错误消息“'x' must be a non-empty numeric vector”。我希望使用 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 函数的结果)。 关于如何最好地做到这一点的任何想法?
谢谢!
【问题讨论】:
-
您能否添加您现在使用的代码来启动
SSD和lapply? -
'num_col2
-
您的代码中缺少
p的值。应该是:boot.HC20 <- as.data.frame(lapply(boot.MSC10[, num_col2], SSD, p = <some number!>)) -
好的,非常感谢!