r语言 - 我不明白这条消息:x > n 中的错误:未实现这些类型的比较



我试图在数据帧上运行一个函数(z-test(,首先定义该函数,然后在单独的步骤中在所有行中迭代应用它。目标是为给定的目标变量形成新的colunm,该colunm包括z检验的p值。我似乎无法让迭代工作,因为我一直收到这个不熟悉的错误消息。

我定义函数:functionname <- function(V1,V2,V3,V4){...}

这一步似乎有效,我可以输入值,并得到正确的结果。我的迭代代码如下:

for (i in rownames(df)){
df[i, "newvariableA"] <- functionname(df[i,"V1"],df[i,"V2"],df[i,"V3"],df[i,"V4"])
df[i, "newvariableB"] <- functionname(df[i,"V1"],df[i,"V2"],df[i,"V3"],df[i,"V4"])
}

它产生错误信息

Error in x > n : comparison of these types is not implemented

我希望你们能给我一个指针,告诉我为什么会产生这个错误,或者另一种方法。

谢谢!

编辑:关于功能输出的更多信息:

functionname <- function(V1,V2,V3,V4){
 ges1 <- V1/sqrt(2)
 ges2 <- V2/sqrt(2)
 t1 <- (V3/100)*ges1
 t2 <- (V4/100)*ges2
 sig <- prop.test(c(t1,t2),c(ges1,ges2),correct=FALSE)$p.value
 sig <- round(sig,4)
 if (sig>0.05){
   sig <- "ns"
 } else if (sig==0){
   sig <- ".0000"
 } else{
   sig <- substr(toString(sig),start=2,stop=100)
 }
 return(sig)
}

这是我很久以前看到的一个问题,几年前我得到了一个R类当时对此没有任何解决方案。所以我们使用DF作为tibble而不是数据帧,然后问题就消失了。我不知道这是如何解决问题的,但它确实解决了。如果你没有任何限制将DF用作数据帧,你可以尝试它,并将其用作tibble

使用此

for (i in 1:nrow(df)){
    df[i,"newvariableA"] <- ztestd(df[i,"V1"],df[i,"V2"],df[i,"V3"],df[i,"V4"])
}

最新更新