Как создать числовой вектор нулевой длины в R

92

Интересно, как я могу создать числовой вектор нулевой длины в R?

Сурджья Нараяна Падхи
источник
22
Я верю, что это так numeric(0).
Blue Magister
Не забудьте принять ответ, если он вам понравился!
Андер Бигури

Ответы:

112

Если вы прочтете справку для vector(or numericor logicalor characteror integeror double, 'raw' or complexetc), вы увидите, что все они имеют 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')
Mnel
источник
1
Прошу прощения за голосование против; это было совершенно случайно, и я только заметил, что это произошло. Это не позволит мне измениться. Сожалею.
Стюарт Р. Джефферис
1
А если пустой вектор предназначен для хранения дат, что бы вы использовали?
Zelbinian
@Zelbinian Это любопытство. Чего вы этим пытаетесь достичь?
BroVic
57

Просто:

x <- vector(mode="numeric", length=0)
srctaha
источник
4

Предположим, вы хотите создать вектор x, длина которого равна нулю. Пусть теперь v - любой вектор.

> v<-c(4,7,8)
> v
[1] 4 7 8
> x<-v[0]
> length(x)
[1] 0
Md. Сахидул Ислам
источник
1
Я не знаю, что там происходит. И снова мой ответ - уценка. Зачем??? Я хочу знать объяснение. Кто-нибудь может мне ответить, почему мой ответ снижается?
Md. Sahidul Islam
Вы берете длину векторного элемента.
upInCloud
2
Длина - это доказанное, что числовой вектор (здесь x) имеет вектор нулевой длины. А вектор x создается из любого другого вектора. Итак, x - искомый вектор нулевой длины. Также вы должны четко проверить заголовок проблемы? @ShaaradDalvi
Md. Sahidul Islam
3

Это не очень красивый ответ, но я использую его для создания векторов нулевой длины:

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
Аарон МакДэйд
источник