R 在函数中添加na.omit作为参数

R 在函数中添加na.omit作为参数,r,na,R,Na,我有以下pvalues列表 pval.list <- list(list(a=c(0.05, 0.0001, 0.32, 0.45), b=c(0.1,0.12,0.01,0.06), c=c(0.1,0.12,0.01,0.06), d=c(0.01,0.02,0.03,0.04)), list(e=c(0.04, NA, 0.232, 0.245), f=c(0.05, 0.01, 0.22, 0.54), g=c(0.005, 0.1, 0.032, 0.045))

我有以下pvalues列表

pval.list <- list(list(a=c(0.05, 0.0001, 0.32, 0.45), b=c(0.1,0.12,0.01,0.06), c=c(0.1,0.12,0.01,0.06), d=c(0.01,0.02,0.03,0.04)),
         list(e=c(0.04, NA, 0.232, 0.245), f=c(0.05, 0.01, 0.22, 0.54), g=c(0.005, 0.1, 0.032, 0.045)),
         list(h=c(0.03, 0.01, NA, 0.4), i=c(0.5, 0.0001, 0.132, 0.045), j=c(0.005, 0.0001, 0.0032, 0.045), k=c(0.5, 0.1, 0.932, 0.545)),
         list(l=c(0.022, NA, 0.32, 0.45), m=c(0.0589, 0.0001, NA, 0.0045)),
         list(n=c(0.051, 0.01, 0.32, 0.45), o=c(0.05, 0.0001, 0.32, 0.45), p=c(0.05, 0.0001, 0.32, 0.45), q=c(0.05, 0.0001, NA, 0.45)),
         list(r=c(NA, 0.001, 0.32, 0.45), s=c(0.05, 0.0001, NA, 0.45), t=c(0.05, 0.0001, 0.32, 0.45)))

pval.list您的NAs是在
sum
中生成的。如果传递参数
na.rm=TRUE
,则结果中不会包含NAs:

Xsq <- -2*sum(log(p), na.rm=TRUE)
给出:

[[1]]
[1] 1.953968e-03 2.999509e-05 5.320831e-04 1.339104e-02

[[2]]
[1] 0.0007878665 0.0317662968 0.0457435481 0.1146067577

[[3]]
[1] 8.982382e-03 3.055250e-08 4.719676e-02 5.094879e-02

[[4]]
[1] 0.009911091 0.001021034 0.684618971 0.014584426

[[5]]
[1] 2.357950e-03 6.135981e-11 5.543601e-01 6.038488e-01

[[6]]
[1] 6.235072e-02 3.470933e-09 6.016501e-01 5.708789e-01
现在,在计算总和之前,将删除所有NA值。
这是否符合您的要求?

您的NAs是在
sum
中生产的。如果传递参数
na.rm=TRUE
,则结果中不会包含NAs:

Xsq <- -2*sum(log(p), na.rm=TRUE)
给出:

[[1]]
[1] 1.953968e-03 2.999509e-05 5.320831e-04 1.339104e-02

[[2]]
[1] 0.0007878665 0.0317662968 0.0457435481 0.1146067577

[[3]]
[1] 8.982382e-03 3.055250e-08 4.719676e-02 5.094879e-02

[[4]]
[1] 0.009911091 0.001021034 0.684618971 0.014584426

[[5]]
[1] 2.357950e-03 6.135981e-11 5.543601e-01 6.038488e-01

[[6]]
[1] 6.235072e-02 3.470933e-09 6.016501e-01 5.708789e-01
现在,在计算总和之前,将删除所有NA值。
这是否符合您的要求?

当输入值为
NA
时,您希望输出是什么?我希望的输出应该是@user1981275的答案中指出的输出当输入值为
NA
时,您希望输出是什么?我希望的输出应该是@user1981275的答案中指出的输出谢谢@user1981275,我得到另一个错误,但这是由于列表中的某些元素只有一个级别,例如
pval.list[[8]]
return 1,然后
cbind
不起作用,我将尝试修复它,我只发布列表中的前6个元素。解决方法可能是:
lappy(lappy(pval.list,function(x)as.matrix(Reduce(x,f=cbind))),应用,1,Fisher.test)
。因为
reduce
cbind
为您上面发布的数据提供了一个矩阵,但是如果在
pval.list
中有一个向量只有一个元素,则返回一个标量。感谢@user1981275,我得到了另一个错误,但这是由于列表中的某些元素只有一个级别,例如
pval.list[[8]]
return 1,然后
cbind
不起作用,我将尝试修复它。我只发布列表中的前6个元素。解决方法可能是:
lappy(lappy(pval.list,function(x)as.matrix(Reduce(x,f=cbind))、apply、1、Fisher.test)
。因为
reduce
cbind
为上面发布的数据提供了一个矩阵,但是如果
pval.list
中有一个向量只有一个元素,则返回一个标量。