Ошибка: (список) объект не может быть приведен к типу 'double' с несколькими переменными - PullRequest
2 голосов
/ 07 июля 2019

У меня есть данные с несколькими переменными.Я пытался преобразовать свои данные в числовые (каждая переменная).Я попытался as.numeric, но я получил ошибку:

Error: (list) object cannot be coerced to type 'double'.

Я также попытался as.matrix, и это нормально.Но мне все еще нужно преобразовать мои данные в числовые.Итак, я попробовал as.numeric(unlist(iris[,1:4])), но это не то, что я хочу.Вот моя попытка:

data("iris")
    iris[,1:4]
    > is.data.frame(iris[,1:4])
      [1] TRUE
    > is.numeric(iris[,1:4])
    [1] FALSE

Это не то, что я хочу.

> as.numeric(unlist(iris[,1:4]))
     [1] 5.1 4.9 4.7 4.6 5.0 5.4 4.6 5.0 4.4 4.9 5.4 4.8 4.8 4.3 5.8     5.7 5.4 5.1 5.7 5.1 5.4 5.1 4.6 5.1 4.8 5.0 5.0 5.2 5.2 4.7
 [31] 4.8 5.4 5.2 5.5 4.9 5.0 5.5 4.9 4.4 5.1 5.0 4.5 4.4 5.0 5.1 4.8 5.1 4.6 5.3 5.0 7.0 6.4 6.9 5.5 6.5 5.7 6.3 4.9 6.6 5.2
 [61] 5.0 5.9 6.0 6.1 5.6 6.7 5.6 5.8 6.2 5.6 5.9 6.1 6.3 6.1 6.4 6.6 6.8 6.7 6.0 5.7 5.5 5.5 5.8 6.0 5.4 6.0 6.7 6.3 5.6 5.5
 [91] 5.5 6.1 5.8 5.0 5.6 5.7 5.7 6.2 5.1 5.7 6.3 5.8 7.1 6.3 6.5 7.6 4.9 7.3 6.7 7.2 6.5 6.4 6.8 5.7 5.8 6.4 6.5 7.7 7.7 6.0

Я бы хотел, чтобы это было так (безимя переменных):

                [,1]        [,2]        [,3]        [,4]
[1,]            5.1         3.5          1.4         0.2
[2,]            4.9         3.0          1.4         0.2
[3,]            4.7         3.2          1.3         0.2
[4,]            4.6         3.1          1.5         0.2

Мне нужно удалить имя переменных и сделать его в виде матрицы, как указано выше .любая помощь, пожалуйста?

1 Ответ

3 голосов
/ 07 июля 2019

Мы можем сделать:

res<-sapply(iris[,-5], as.numeric)
attr(res,"dimnames") <- NULL

Или, как @markus предлагает просто:

unname(as.matrix(iris[,1:4]))

Результат:

       [,1] [,2] [,3] [,4]
  [1,]  5.1  3.5  1.4  0.2
  [2,]  4.9  3.0  1.4  0.2
  [3,]  4.7  3.2  1.3  0.2
  [4,]  4.6  3.1  1.5  0.2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...