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
答案 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)]
当然这只会消除无限,但它并不能保证你所做的事情是有意义的。