仅使用对象中的数值

时间:2014-09-09 09:26:19

标签: r

testi有一个包含数值的表,包括零。 我想对列进行日志转换,产生字符串“-Inf”。 因此,对于包含日志转换后字符的任何列,shapiro.test会导致“NA”。

但是,是否可以从该列中仅提取数值并在之后执行shapiro.test?也许我可以用什么来代替“-Inf”?

感谢您的帮助!

test <- log(x)
test
 [1] -Inf -7.562929 -7.424757 -6.284397 -6.637388 -8.141037 -5.371136 -7.093784 -6.489694 -6.529703
[11] -7.282913 -7.075025 -7.711110 -9.352510 -6.580074 -6.530339 -5.549224 -7.347854 -4.088114 -Inf (rest omitted)

str(test)
num [1:60] -7.32 -7.56 -7.42 -6.28 -6.64 ...

shapiro.test(test)

    Shapiro-Wilk normality test

data:  test
W = NaN, p-value = NA

2 个答案:

答案 0 :(得分:2)

您可以使用is.finite()函数提取具有所有有限值的子集。

a = c(pi/0, 3,4,5,2,3)
a
[1] Inf  3  4  5  2  3
a = a[is.finite(a)]
a
[1] 3  4  5  2  3

答案 1 :(得分:1)

在R Inf中是数值而不是字符串。它表示最大可能的双精度数。如果要从向量中删除无限值,可以尝试使用is.finite函数,例如:

    test[is.finite(test)] 

当然这只会消除无限,但它并不能保证你所做的事情是有意义的。