我想「截斷」位於分位數之上或之下的數據框中的值。分位數函數錯誤
類似的東西,以 「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應該解決數據集中的NAs問題?
我真的不知道爲什麼,但在這種情況下,R不會承認na.rm = T!我剛剛發現它適用於na.rm = TRUE !!! T和TRUE有區別嗎?直到現在我總是使用「T」。 – path
您在這些步驟之上的腳本中的任何位置定義了變量「T」嗎?你可以用'na.rm = TRUE'而不是'na.rm = T'來試試你的設置。 – asb
嘗試運行'rm(T)'並再次執行它 –