R对每列应用ecdf

R对每列应用ecdf,r,apply,ecdf,R,Apply,Ecdf,我试图获取数据帧中每列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); c

我试图获取数据帧中每列
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)
但不知道如何存储结果


有什么帮助吗?

ecdf已矢量化,您可以使用

apply(iris[, 1:4], 2, function(c) ecdf(c)(c))

ecdf(c)
返回一个(step)函数,该函数接受一个向量作为求值的参数(在本例中再次在
c
位置求值)是的,我太笨了。实际上,我以前已经将向量输入到
ecdf()
中,但由于某种原因,在这种情况下我没有想到。。。
apply(iris[, 1:4], 2, function(c) ecdf(c)(c))