c
データ フレームの各列の ecdf() を取得し、列の行r
をその列にフィードして、セルごとecdf(c)
に対応する値を返そうとしています。ecdf(c)(r)
以下の機能が動作します。
getecdf <- function(data){
# initialise result data
result <- data.frame(matrix(NA, nrow = nrow(data), ncol = ncol(data)));
rownames(result) <- rownames(data); colnames(result) <- colnames(data);
for (c in 1:ncol(data)){
col <- data[,c];
cum <- ecdf(col)
for (r in 1: length(col)){
result[r,c] <- cum(col[r])
}
}
return <- result
}
cum_matrix <- getecdf(iris)
ただし、これを行うためのワンライナーコードがあることは 99.5% 確信apply
しています。私は試した:
apply(iris, 2, function(x) for (r in x){ ecdf(x)(r)})
しかし、結果を保存する方法がわかりません。
何か助けはありますか?