我正在尝试在给定矩阵的每列上执行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),...):数学函数的非数字参数
答案 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,......等列是非数字的......