数据帧列上循环中的R错误Wilcoxon测试:不够(有限)和#x27;x';观察

数据帧列上循环中的R错误Wilcoxon测试:不够(有限)和#x27;x';观察,r,dataframe,statistics,R,Dataframe,Statistics,我有一个15 x 555的数据框,行的样本数与列的蛋白质名称相对。此数据框的最后3列包含映射信息,即治疗、治疗时间和月份,并标记为这样 在数据帧列上循环时,我希望使用wilcoxon.test执行wilcoxon测试,并根据映射信息直接从df获取信息 粗略示例: pre_post <- vector() for(i in names(df[,1:552])){ pre_post <- append(pre_post, wilcox.test(df[df$Treatment

我有一个15 x 555的数据框,行的样本数与列的蛋白质名称相对。此数据框的最后3列包含映射信息,即治疗、治疗时间和月份,并标记为这样

在数据帧列上循环时,我希望使用wilcoxon.test执行wilcoxon测试,并根据映射信息直接从df获取信息

粗略示例:

pre_post <- vector()
for(i in names(df[,1:552])){  
    pre_post <- append(pre_post, wilcox.test(df[df$Treatment_Time %in% "Pre", i], df[df$Treatment_Time %in% "Post", i], na.action(na.omit))$p.value))}

pre\u post考虑
tryCatch
在具有零行的过滤器上返回NA,从而导致
wilcox.test的错误。下面使用
sapply
返回向量中的p值

p_value_vector <- sapply(names(df[,1:552]), function(i) 
    tryCatch(
      wilcox.test(df[df$Treatment_Time %in% "Pre", i], 
                  df[df$Treatment_Time %in% "Post", i], 
                  na.action(na.omit))$p.value),
      warning = function(w) return(NA),
      error = function (e) return(NA)
    )
)

p_值_向量在寻求帮助时,您应该包括一个简单的示例输入和所需输出,可用于测试和验证可能的解决方案。如果这些值不存在,您希望发生什么?您的代码不会产生任何结果,因为对
print()
的隐式调用不会在循环中发生。您需要显式使用
print()
函数或将值添加到向量中以保留结果。查看(1:5中的i)1+i的
与(1:5中的i)打印(1+i)的
之间的差异。如果使用
wilcox.test()的公式方法,代码也会更简单。
。阅读手册页面:
?控制
?wilcox.test
p_value_vector <- sapply(names(df[,1:552]), function(i) 
    tryCatch(
      wilcox.test(df[df$Treatment_Time %in% "Pre", i], 
                  df[df$Treatment_Time %in% "Post", i], 
                  na.action(na.omit))$p.value),
      warning = function(w) return(NA),
      error = function (e) return(NA)
    )
)