Как проверить, является ли объект вектором в R - PullRequest
0 голосов
/ 18 декабря 2018

Я хочу проверить, является ли объект вектором в R. Я запутался, почему

is.vector(c(0.1))

возвращает TRUE и так же

is.vector(0.1)

Мне бы хотелосьвозвращать false, когда это просто число, и true, когда это вектор.Может ли кто-нибудь предложить какую-либо помощь по этому вопросу, пожалуйста?

Большое спасибо заранее.

Ответы [ 2 ]

0 голосов
/ 18 декабря 2018

в R не существует ни одного числа или одной строки.Они являются векторами длины 1. Или встроены в некоторые более сложные структуры.

is.vector(c(0.1)) и is.vector(0.1) в R абсолютно идентичны.

Это также причина, почему length("this is a string/character")возвращает 1 - потому что length() в этом случае измеряет количество элементов в векторе.

И вы увидите это, если вы наберете "this is a string/character" в консоли R: Возвращает [1] "this is a string/character" - [1] указывает: вектор длины 1.

Таким образом, вы должны сделать nchar("this is a string/character"), чтобы получить длину первого элемента - строки символов - возвращая 26.

nchar(c("this is a string/character", "and this another string"))
## [1] 26 23
## nchar is vectorized as you see ...

Этоэто важное отличие от Python, где строки и числа могут стоять отдельно.Так len("this") возвращает 4 в Python.len(["this"]) однако 1 (1 элемент в списке, таким образом, длина списка равна 1).

0 голосов
/ 18 декабря 2018

Как уже упоминалось @RHertel, R рассматривает c(0.1) вектор длины 1. Вы также можете проверить на length.Например,

> x <- 1
> y <- 1:2
> is.vector(x) & length(x) > 1
[1] FALSE
> is.vector(y) & length(y) > 1
[1] TRUE
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...