почему функция класса не рассматривает вектор как вектор в R? - PullRequest
1 голос
/ 28 июня 2019

Я изучаю этот пост .

автор утверждает, что это вектор

a <- c(1,2,5.3,6,-2,4) # numeric vector

, но функция класса не считает его вектором

> class(a)
[1] "numeric"

для матрицы, все идет хорошо.

> a = matrix(1:6, nrow = 2, ncol = 3)
> class(a)
[1] "matrix"

почему это так?

Ответы [ 2 ]

5 голосов
/ 28 июня 2019

Все основные типы в R, такие как numeric, character и т. Д., Являются векторами.Даже один элемент, такой как 3, на самом деле является вектором длины 1. Поэтому "numeric" неявно является числовым вектором.

3 голосов
/ 28 июня 2019

Ваш a объект является вектором:

is.vector(a)
[1] TRUE

В R термин вектор является гораздо более общим, и многие объекты данных, которые большинство математиков считают не вектором, также будут считаться такими:

is.vector( list(a=2, b=3, list(d=4) ) )
[1] TRUE

См. предыдущий ответ о том, что считается вектором, а не вектором. Вы можете думать о «векторе» как о суперклассе. Это на самом деле наличие или отсутствие атрибутов, которые переключаются из не-вектора в векторное состояние в R; в случае объектов матрицы R это атрибут измерения, который приводит к сбою теста.

is.vector( matrix(1:4, 2,2) )
[1] FALSE

И есть некоторые языковые объекты, которые также подпадают под тест is.vector:

 is.vector( expression(a,b) )
[1] TRUE
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...