数据框的分位数

Hof*_*ann 1 r quantile

有一个data.frame()我想要计算分位数的列:

tert <- c(0:3)/3
data <- dbGetQuery(dbCon, "SELECT * FROM tablename")
quans <- mapply(quantile, data, probs=tert, name=FALSE)
Run Code Online (Sandbox Code Playgroud)

但结果只包含分位数返回列表的最后一个元素,而不是整个结果.我也收到警告longer argument not a multiple of length of shorter.如何修改我的代码才能使其正常工作?

PS:单独的功能就像魅力一样,所以我可以使用for循环:

quans <- quantile(a$fileName, probs=tert, name=FALSE)
Run Code Online (Sandbox Code Playgroud)

PPS:什么也有效指定probs

quans <- mapply(quantile, data, name=FALSE)
Run Code Online (Sandbox Code Playgroud)

Hon*_*Ooi 5

问题是mapply尝试将给定函数按顺序应用于所有指定参数的每个元素.既然你只想为一个参数做这个,你应该使用lapply,而不是mapply:

lapply(data, quantile, probs=tert, name=FALSE)
Run Code Online (Sandbox Code Playgroud)

或者,您仍然可以使用mapply但指定不在参数中循环的MoreArgs参数.

mapply(quantile, data, MoreArgs=list(probs=tert, name=FALSE))
Run Code Online (Sandbox Code Playgroud)