Когда мы получаем ошибку 'x' must be numeric"
, лучше проверить типы столбцов. Более простой вариант -
str(OtherIncludedClean)
Если мы обнаружим, что типы не numeric/integer
и это character/factor
, нам нужно преобразовать его в тип numeric
(при условии, что большинство значений являются числовыми в столбце и из-за одного или двух элементов который не является числовым, он меняет тип).
Способ конвертации as.numeric
. Для одного столбца: as.numeric(data$columnname)
, если это character
класс, а для factor
класс,
as.numeric(as.character(data$columnname))
Здесь нам нужно изменить все столбцы на numeric
(при условии, что это character
класс). Для этого выполните цикл по столбцам с lapply
и присвойте вывод обратно набору данных
OtherIncludedClean[] <- lapplyOtherIncludedClean, as.numeric)
, а затем применить rowMeans
Если класс только подмножества столбцов равен character
, то нам нужно только выполнить цикл по этим столбцам
i1 <- !sapply(OtherIncludedClean, is.numeric)
OtherIncludedClean[i1] <- lapplyOtherIncludedClean[i1], as.numeric)