y中的错误(sort(x),...):数学函数的非数字参数

时间:2015-02-21 14:54:58

标签: r

我正在尝试在给定矩阵的每列上执行KS.test。但我得到一个错误,因为它显示在标题中。我所做的如下:

url <- 'https://gist.githubusercontent.com/anonymous/052e50e7e777849449b3/raw/data_example.txt'
 library(RCurl)
 x <- getURL(url, ssl.verifypeer=FALSE)

 df1 <- read.delim(textConnection(x),header=TRUE, row.names=1, 
            stringsAsFactors=FALSE)
 dim(df1)
 #[1] 507 990

 lst <- Map(function(x,y,z) setNames(data.frame(y,x)[order(-x),], 
            c('name', z)), df1, list(rownames(df1)), names(df1))

res <- do.call(cbind,lst)
 row.names(res) <- NULL

计算KS.test我执行以下命令

f <- function(res) unlist(ks.test(res,"punif")[1:2])
 apply(res[,seq(1,length(res),by=2)],2,f)

错误是 y中的错误(sort(x),...):数学函数的非数字参数

1 个答案:

答案 0 :(得分:1)

你可以尝试

res1 <- t(apply(res[,seq(2,length(res),by=2)],2,f))
row.names(res1) <- NULL #if you don't need the row names
head(res1,2)
#     statistic.D p.value
#[1,]   0.8010560       0
#[2,]   0.7025389       0

或者

res1 <- t(apply(res[,c(FALSE, TRUE)], 2, f))

因为第1,第3,第5,......等列是非数字的......