Почему я получаю сообщение об ошибке в colMeans (x, na.rm = TRUE): «x» должно быть числовым - PullRequest
0 голосов
/ 06 марта 2020

Мой код выглядит следующим образом:

my_filtered_data <- my_data[, colSums(my_data != 0) >= 300]

set.seed(123)
data1.csv <- my_filtered_data[sample(nrow(my_filtered_data), 200), ]
data2.csv <- data.frame(data1.csv)
data3.csv <- scale(data2.csv, center = TRUE) # Gives error.

Ошибка в colMeans (x, na.rm = TRUE): «x» должно быть цифрой c

Может кто-нибудь объяснить, почему я получаю эту ошибку?

1 Ответ

0 голосов
/ 06 марта 2020

Это немного больше для комментария, может или не может ответить на проблему. Но я думаю, что это может быть одной из проблем с набором данных OP.

Вы использовали команду data.frame, теперь data.frame по умолчанию содержит параметр stringsAsFactors = TRUE, и, вероятно, это преобразование одного из ваших столбцов в Фактор, именно поэтому вы получаете эту ошибку. Один из способов избежать использования options(stringsAsFactors=FALSE) поверх вашего кода или data.frame(your_object, stringsAsFactors=FALSE)

Просто чтобы воссоздать ошибку, вы можете использовать набор данных iris для отображения похожая ошибка,

scale(iris[,1:5], center=TRUE, scale=TRUE) 
## This fails with the same error as the last column in iris data set is a factor

, но это будет работать,

scale(iris[,1:4], center=TRUE, scale=TRUE)

Примечание. Я опускаю сюда столбец, в вашем случае вы можете изменить его на цифру c ( так что это полностью зависит от того, что вы пытаетесь сделать здесь). Если вы хотите изменить его на число c из коэффициента, попробуйте запустить as.numeric(as.character(your_column)).

Также, как предлагается в комментариях, попробуйте избегать имен, содержащих точку в вашем объекте в R.

Итак, сумма всей информации может быть заключена в одну строку, которую вы должны попробовать:

data.frame(data1.csv, stringsAsFactors=FALSE), затем попробуйте выполнить команду scale.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...