Цікаво, як я можу створити числовий вектор нульової довжини в R?
Цікаво, як я можу створити числовий вектор нульової довжини в R?
Відповіді:
Якщо прочитати довідку vector
(або numeric
чи logical
або character
чи integer
або double
, «сирі» або complex
т.д.) , то ви побачите , що всі вони мають length
(або length.out
аргумент , який по умовчанням 0
Тому
numeric()
logical()
character()
integer()
double()
raw()
complex()
vector('numeric')
vector('character')
vector('integer')
vector('double')
vector('raw')
vector('complex')
Всі повертають 0 векторів довжини відповідних атомних мод.
# the following will also return objects with length 0
list()
expression()
vector('list')
vector('expression')
Припустимо, ви хочете створити вектор x, довжина якого дорівнює нулю. Тепер нехай v - будь-який вектор.
> v<-c(4,7,8)
> v
[1] 4 7 8
> x<-v[0]
> length(x)
[1] 0
Це не дуже гарна відповідь, але саме це я використовую для створення векторів нульової довжини:
0[-1] # numeric
""[-1] # character
TRUE[-1] # logical
0L[-1] # integer
Літерал є вектором довжиною 1 і [-1]
видаляє перший елемент ( єдиний елемент у цьому випадку) з вектора, залишаючи вектор з нульовими елементами.
Як бонус, якщо ви хочете сингл NA
відповідного типу:
0[NA] # numeric
""[NA] # character
TRUE[NA] # logical
0L[NA] # integer
numeric(0)
.