1

分位数を計算したい列の data.frame() があります。

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

ただし、結果には、結果全体ではなく、変位値の戻りリストの最後の要素のみが含まれます。警告も表示されlonger argument not a multiple of length of shorterます。コードを変更して機能させるにはどうすればよいですか?

PS: 関数だけでも魔法のように機能するので、for ループを使用できます。

quans <- quantile(a$fileName, probs=tert, name=FALSE)

PPS:指定しないことも機能しますprobs

quans <- mapply(quantile, data, name=FALSE)
4

2 に答える 2

5

問題は、指定されたすべてmapplyの引数の各要素に、指定された関数を順番に適用しようとしていることです。1 つの引数に対してのみこれを実行する必要があるため、 ではなくを使用する必要があります。lapplymapply

lapply(data, quantile, probs=tert, name=FALSE)

または、引き続き使用できますが、引数でループオーバーしないmapply引数を指定します。MoreArgs

mapply(quantile, data, MoreArgs=list(probs=tert, name=FALSE))
于 2013-06-10T09:53:59.460 に答える
0

私は最終的に、私が好きではない回避策を見つけましたが、ちょっとうまくいきます。おそらく、誰かがそれを行う正しい方法を教えてくれるでしょう:

q <- function(x) { quantile(x, probs=c(0:3)/3, names=FALSE) }
mapply(q, data)

動作しますが、違いがどこにあるのかわかりません。

于 2013-06-10T09:52:52.283 に答える