Один из возможных подходов: сначала очистить a
. Если вы начнете с чего-то вроде a = c(1, 2, 3, 4, 5, "c", NA)
, то a
не будет храниться как переменная цифра c (из-за записи не цифра c). Сначала вы можете привести его к числовому c вектору, что даст дополнительную NA
запись:
a = c(1, 2, 3, 4, 5, "c", NA)
a <- as.numeric(a)
a
## 1 2 3 4 5 NA NA
Затем вы можете установить исходный вектор, сохранив только записи из этого являются цифрами c (с помощью !
):
a <- a[!is.na(as.numeric(a))]
a
## 1 2 3 4 5
Вы можете сделать это сразу после первоначального объявления, например, a
. Грегор Томас также предложил na.omit()
, который мог бы работать, если бы он правильно сочетался с as.numeric()
.
. Я заметил, что вы вычислили среднее значение, используя встроенную функцию mean()
и na.rm = T
... если вы можете использовать тот же подход здесь, обратите внимание, что var()
также имеет необязательный параметр na.rm = T
. Я подозреваю, что вам не разрешено использовать его, поскольку вам было поручено вычислить дисперсию вручную, но, возможно, вы могли бы использовать это для проверки ваших ответов.