Почему я вижу "целое число", а не "вектор" для класса вектора R - PullRequest
0 голосов
/ 09 сентября 2018

Почему тип данных столбца вырезан из фрейма данных, показанного как "целое число" вместо "Вектор"?

df <- data.frame(x = 1:3, y = c('a', 'b', 'c'))
#  x y
#1 1 a
#2 2 b
#3 3 c
c1 <- df[ ,1]
#[1] 1 2 3
class(c1)
#[1] "integer"

Ответы [ 2 ]

0 голосов
/ 09 сентября 2018

В R "класс" является атрибутом объекта. Однако в определении языка R вектор не может иметь других атрибутов, кроме «имен» (именно поэтому «фактор» не является вектором). Функция class здесь дает вам «режим» вектора.

С ?vector:

 ‘is.vector’ returns ‘TRUE’ if ‘x’ is a vector of the specified
 mode having no attributes _other than names_.  It returns ‘FALSE’
 otherwise.

С ?class:

 Many R objects have a ‘class’ attribute, a character vector giving
 the names of the classes from which the object _inherits_.  If the
 object does not have a class attribute, it has an implicit class,
 ‘"matrix"’, ‘"array"’ or the result of ‘mode(x)’ (except that
 integer vectors have implicit class ‘"integer"’).

См. Здесь , чтобы узнать больше о «режиме» вектора и познакомиться с другим удивительным объектом R: NULL.

Чтобы понять проблему «фактора», попробуйте второй столбец:

c2 <- df[, 2]

attributes(c2)
#$levels
#[1] "a" "b" "c"
#
#$class
#[1] "factor"

class(c2)
#[1] "factor"

is.vector(c2)
#[1] FALSE
0 голосов
/ 09 сентября 2018

Потому что это тип. Это vector из integer с. :)

см

?vector

и

?integer

~ J

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