Jak utworzyć wektor numeryczny o zerowej długości w R

92

Zastanawiam się, jak mogę utworzyć numeryczny wektor o zerowej długości w R?

Surjya Narayana Padhi
źródło
22
Myślę, że tak numeric(0).
Blue Magister,
Nie zapomnij przyjąć odpowiedzi, jeśli Ci się spodobała!
Ander Biguri

Odpowiedzi:

112

Jeśli przeczytasz pomoc dotyczącą vector(lub numericlub logicallub characterlub integerlub double, 'surowe' lub complexitp.), Zobaczysz, że wszystkie mają length(lub length.outargument, który domyślnie wynosi 0

W związku z tym

numeric()
logical()
character()
integer()
double()
raw()
complex() 
vector('numeric')
vector('character')
vector('integer')
vector('double')
vector('raw')
vector('complex')

Wszystkie zwracają wektory o długości 0 odpowiednich modów atomowych.

# the following will also return objects with length 0
list()
expression()
vector('list')
vector('expression')
mnel
źródło
1
Przepraszam za głos przeciw; to było całkowicie przypadkowe i dopiero co zauważyłem, że się wydarzyło. Nie pozwala mi się zmienić. Przepraszam.
Stuart R. Jefferys
1
A jeśli pusty wektor ma przechowywać daty, czego byś użył?
Zelbinian
@Zelbinian To ciekawostka. Co starasz się przez to osiągnąć?
BroVic
57

Po prostu:

x <- vector(mode="numeric", length=0)
srctaha
źródło
4

Załóżmy, że chcesz utworzyć wektor x, którego długość wynosi zero. Teraz niech v będzie dowolnym wektorem.

> v<-c(4,7,8)
> v
[1] 4 7 8
> x<-v[0]
> length(x)
[1] 0
Md. Sahidul Islam
źródło
1
Nie wiem, co się tam dzieje. Ponownie moja odpowiedź brzmi: zaniżona. Czemu??? Chcę poznać wyjaśnienie. Czy ktoś może mi odpowiedzieć, dlaczego moja odpowiedź została oznaczona jako obniżona?
Md. Sahidul Islam
Bierzesz długość elementu wektorowego.
upInCloud
2
Długość to udowodnione, że wektor numeryczny (tutaj x) ma wektor o zerowej długości. Wektor x jest tworzony z dowolnego innego wektora. Zatem x jest pożądanym wektorem o zerowej długości. Powinieneś także wyraźnie sprawdzić nagłówek problemu? @ShaaradDalvi
Md. Sahidul Islam
3

To nie jest zbyt piękna odpowiedź, ale to jest to, czego używam do tworzenia wektorów o zerowej długości:

0[-1]     # numeric
""[-1]    # character
TRUE[-1]  # logical
0L[-1]    # integer

Literał to wektor o długości 1 i [-1]usuwa pierwszy element ( w tym przypadku jedyny ) z wektora, pozostawiając wektor z zerowymi elementami.

Jako bonus, jeśli chcesz singla NAodpowiedniego typu:

0[NA]     # numeric
""[NA]    # character
TRUE[NA]  # logical
0L[NA]    # integer
Aaron McDaid
źródło