Я полагаю, что UML полезен только для того, что это заставляет людей думать об отношениях между своими классами. Это - хорошая начальная точка, чтобы начать думать о таких отношениях, но это - определенно не решение для всех.
Я верю, что использование UML субъективно к ситуации, в которой работает группа разработчиков.
na.omit ()
примет матрицы (и фреймы данных) и возвращать только те строки без каких-либо значений NA - требуется complete.cases ()
еще один шаг, удаляя за вас строки FALSE.
> x <- data.frame(c(1,2,3), c(4, NA, 6))
> x
c.1..2..3. c.4..NA..6.
1 1 4
2 2 NA
3 3 6
> na.omit(x)
c.1..2..3. c.4..NA..6.
1 1 4
3 3 6
Я думаю, что na.rm обычно работает только внутри функций, например, для функции mean . Я бы выбрал complete.cases : http://stat.ethz.ch/R-manual/R-patched/library/stats/html/complete.cases.htm
let скажем, у вас есть следующая матрица 3x3:
x <- matrix(c(1:8, NA), 3, 3)
> x
[,1] [,2] [,3]
[1,] 1 4 7
[2,] 2 5 8
[3,] 3 6 NA
, тогда вы можете получить полные варианты этой матрицы с помощью
y <- x[complete.cases(x),]
> y
[,1] [,2] [,3]
[1,] 1 4 7
[2,] 2 5 8
. complete.cases -функция возвращает вектор значений истинности, который говорит, является ли случай завершен:
> complete.cases(x)
[1] TRUE TRUE FALSE
, а затем вы индексируете строки матрицы x и добавляете ",", чтобы указать, что вам нужны все столбцы.
Если вы хотите удалить строки, содержащие NA, вы можете использовать apply () для применения быстрой функции к проверьте каждую строку. Например, если ваша матрица x,
goodIdx <- apply(x, 1, function(r) !any(is.na(r)))
newX <- x[goodIdx,]