我想“截断”数据框中高于或低于分位数的值。
类似的东西,“TRUNC”是一个矩阵:
for ( i in 1 : ncol (TRUNC) ) {
for ( j in 1 : nrow (TRUNC) ) {
if ( (TRUNC[i,j] > quantile(TRUNC,probs=0.995,na.rm=T) ) || (TRUNC[i,j] <
quantile(TRUNC,probs=0.005,na.rm=T) ) ) {
TRUNC[i,j] = NA } } }
但是我一直收到这样的错误消息:
Fehler in if (na.rm) x <- x[!is.na(x)] else if (any(is.na(x)))
stop("missing values and NaN's not allowed if 'na.rm' is FALSE") :
Argument kann nicht als logischer Wert interpretiert werden
Zusätzlich: Warnmeldung:
In if (na.rm) x <- x[!is.na(x)] else if (any(is.na(x)))
stop("missing values and NaN's not allowed if 'na.rm' is FALSE") :
Bedingung hat Länge > 1 und nur das erste Element wird benutzt
所以我尝试了一个简单的例子:
A=matrix(seq(1,8),nrow=4)
A[2,2]=NA
quantile(A,probs=0.5)
这也给了我同样的错误。
即使我尝试这样的事情:
B=as.vector(A)
quantile(B,na.rm=T)
它行不通!
如果有人可以向我解释解决方案,我将非常感激!
我的代码有什么问题?na.rm=T 不是应该解决数据集中的 NA 问题吗?