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)))
我正在尝试将用户定义的函数(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)))