объект ‘list’ нельзя принудительно ввести ‘double’- как.numeric() в R

#r #dataframe #numeric

#r #фрейм данных #числовой

Вопрос:

Как и в iris наборе данных, в моих данных все столбцы классифицируются как числовые, но весь data.frame не классифицируется как числовой. Следующий код показывает, что я пробовал. Я хочу iris быть числовым без изменений в форме данных

 data("iris")
> is.numeric(iris)
[1] FALSE
iris <- as.numeric(iris)
ERROR: 'list' object cannot be coerced to type 'double'

> iris <- lapply(iris, as.numeric)
> is.numeric(iris)
[1] FALSE

> iris <- as.numeric(unlist(iris))
> is.numeric(iris)
[1] TRUE ##but now it is only one column (instead of 5)
  

Комментарии:

1. Не совсем понятно, чего вы пытаетесь достичь здесь, но, возможно, data.matrix(iris) это то, что вы ищете.

2. Столбец Species в iris является фактором. В последней части вы приводите столбец factor к числовому значению, следовательно, это работает.. не очень уверен, что вы пытаетесь здесь сделать

3. iris является data.frame и, следовательно, никогда не numeric . Даже если вы переведете все его столбцы в numeric s (но смотрите предостережение StupidWolf), это не создаст саму numeric таблицу.

4. БОЖЕ! @KonradRudolph, я этого не знал. Как и предложил @nicola, он работает с «data.matrix (iris)« . 😉

Ответ №1:

numeric это описание типа данных, которое допустимо только для векторов и матриц. Фреймы данных по определению являются списками. Нет причин хотеть, чтобы фрейм данных был числовым, если все столбцы в нем являются числовыми.