【发布时间】:2019-01-24 00:02:39
【问题描述】:
我有一个超过 110 000 行的 data.frame df。看起来是这样的:
traking_id A1_CTRL A2_CTRL A3_CTRL A4_CTRL A5_CTRL A1_DEX A2_DEX A3_DEX A4_DEX A5_DEX
1 ENSMUST00000000001 1.35358e+01 1.03390e+01 1.03016e+01 1.12654e+01 1.22707e+01 1.40684e+01 9.15279e+00 1.17276e+01 1.14550e+01 1.46256e+01
2 ENSMUST00000000003 5.01868e-06 5.59107e-06 1.60922e-01 2.45402e-01 2.18614e-01 2.24124e-01 2.88035e-01 7.18876e-06 1.74746e-06 0.00000e+00
...
我有兴趣为每行执行两次 shapiro.test - 一次用于 2:6 列中的值,一次用于 7:11 列中的值。
我想获取函数 shapiro.test 返回的两个对象列表,以便从中提取 p.value 列。我想通过使用函数 apply 来做到这一点,但是我的代码
shapiro.test_CTRL <- apply(data.matrix(df[,2:6]), 1, shapiro.test)
返回错误
Error in FUN(newX[, i], ...) : all 'x' values are identical
但是,当我使用 pearson.test 时,一切正常:
pearson.test_CTRL <- apply(data.matrix(df[,2:6]), 1, pearson.test)
只为一行计算 shapiro.test 也可以正常工作:
shapiro.test(data.matrix(x[1,2:6]))
我想知道为什么以我的方式将 apply 与 shapiro.test 一起使用会导致错误以及如何正确执行?
【问题讨论】:
标签: r