夏皮罗测试与测试公司;plyr:all';x';值是相同的
我正在尝试对变量“Size”运行Shapiro-Wilks测试,使用我正在使用ddply(通过变量“Site”和“Category”)进行子集设置的数据集,但我一直收到一条错误消息 这是我的数据集(d)的一个示例。我有9个类别和13个地点的4237次观察:夏皮罗测试与测试公司;plyr:all';x';值是相同的,r,dplyr,plyr,R,Dplyr,Plyr,我正在尝试对变量“Size”运行Shapiro-Wilks测试,使用我正在使用ddply(通过变量“Site”和“Category”)进行子集设置的数据集,但我一直收到一条错误消息 这是我的数据集(d)的一个示例。我有9个类别和13个地点的4237次观察: Site Genus Size Category Arn01 ACR 4 ACR Arn01 ACR 7 ACR Arn02 ACR 3
Site Genus Size Category
Arn01 ACR 4 ACR
Arn01 ACR 7 ACR
Arn02 ACR 3 ACR
我为Shapiro Wilks创建了一个函数:
shap.w <- function(input){ #shapiro wilk test function
if(sum(!is.na(input$Size)) > 3 & sum(!is.na(input$Size)) < 5000){
p <- shapiro.test(input$Size)$p.value
return(p)}else{return(NA)} }
尽管他们显然不是。如有任何帮助/建议,将不胜感激
ETA输出
dput(d[1:20]:
表格的ETA输出(d$Size)
123456789101121415171718192324242562728292935353363839
14 271 525 548 521 424 201 206 50 357 23 95 36 7 171 11 14 30 4 145 11 21 5 46 4 1 5 1 95 1 2 31 3 1 2 1
40 41 42 43 44 45 46 48 50 51 53 55 56 57 60 62 63 65 66 70 72 75 76 80 82 83 85 88 90 94 95 100 105 110 120 125
80 1 9 3 4 22 1 4 42 1 1 4 1 3 64 3 5 9 4 13 1 2 1 20 2 2 2 1 5 1 2 17 1 2 6 2
128 130 143 150 155 160 180 200 230 300 890 920
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
您可以返回NA\u real\u
is.numeric(NA)
[1] FALSE
is.numeric(NA_real_)
[1] TRUE
但这仍然是一个NA:
is.na(NA_real_)
[1] TRUE
但是,as.numeric
也应该解决这个问题(可能会仔细检查您的函数在给定输入的情况下返回给ddply的内容)好的,多亏了我在评论中得到的帮助,我能够通过更新函数的代码来解决这个问题:
shap.w <- function(input){ #shapiro-wilks test function
if(length(unique((input$Size[!is.na(input)]))) > 3
& length(unique((input$Size[!is.na(input)])))< 5000 ){
p <- shapiro.test(input$Size)$p.value
return(p)}else{return(NA)} }
shap.w 3
&长度(唯一((输入$Size[!is.na(输入)]))<5000){
p谢谢,@Glen_b!原来我在原始代码中使用了不正确的函数。当我更新该函数时,我收到一条新的错误消息,上面写着“error in shapiro.test(input$Size):所有的“x”值都是相同的。我在网站上看到了一些类似的问题,但似乎没有什么能解决我的问题。如果您有任何想法,我将不胜感激!评论不用于扩展讨论;此对话已结束。
is.numeric(NA)
[1] FALSE
is.numeric(NA_real_)
[1] TRUE
is.na(NA_real_)
[1] TRUE
shap.w <- function(input){ #shapiro-wilks test function
if(length(unique((input$Size[!is.na(input)]))) > 3
& length(unique((input$Size[!is.na(input)])))< 5000 ){
p <- shapiro.test(input$Size)$p.value
return(p)}else{return(NA)} }