Jakie są ograniczenia co do tego, jakie znaki (i być może inne ograniczenia) mogą być użyte dla nazwy zmiennej w R?Ograniczenia nazw zmiennych w R
(Ten krzyczy z ogólnym odniesieniem, ale nie wydaje się znaleźć odpowiedź)
Jakie są ograniczenia co do tego, jakie znaki (i być może inne ograniczenia) mogą być użyte dla nazwy zmiennej w R?Ograniczenia nazw zmiennych w R
(Ten krzyczy z ogólnym odniesieniem, ale nie wydaje się znaleźć odpowiedź)
może być patrząc na dyskusję z ?make.names
:
składniowo poprawna nazwa składa się z liter, liczby i kropka lub znaki podkreślone i rozpoczyna się od litery lub kropki, które nie są oznaczone numerem . Nazwy takie jak ".2way" nie są poprawne, podobnie jak zastrzeżone słowa .
W samym pliku pomocy, tam jest link do listy zarezerwowanych słów, którymi są:
jeśli powtórz jeszcze podczas gdy funkcja w kolejnej przerwie
TRUE FALSE NULL Inf NaN NA NA_integer_ NA_real_ NA_complex_ NA_character_
Wiele innych dobre notatki z uwagami obejmują punkt Jamesa do R FAQ zajmuje się tym zagadnieniem i wskaźnikiem Josha do powiązanego SO question zajmującego się sprawdzaniem poprawnych składniowo nazw.
Pamiętaj, że możesz użyć cokolwiek, jeśli podasz nazwę zmiennej, np. "TRUE" <-2 "jest prawidłowe. Nie mogę tego poprawnie napisać, używając składni SO :( – James
Oczywiście, moim problemem było to, że szukałem w Google odwrotności ("ograniczenia") lub w zasadzie * nieprawidłowych * znaków, gdybym szukał * ważnych * znaków. –
Również sama kropka jest ważna. '. = 3; print (.)' –
Prawie NIE! Można użyć „Przypisanie”, aby śmieszne nazwy zmiennych:
assign("1",99)
ls()
# [1] "1"
Tak, to zmienna o nazwie „1”. Cyfra 1. Na szczęście to nie zmienia wartość całkowitą 1, i trzeba pracować nieco trudniej dostać swoją wartość:
1
# [1] 1
get("1")
# [1] 99
The „składniowe ograniczeń” niektórzy ludzie mogą wspomnieć są czysto nałożona przez parser. Zasadniczo nie można nazwać obiektu R. Po prostu nie możesz tego zrobić za pomocą operatora przypisania "<". "get" cię uwolni :)
Czy istnieją _literalne_ żadne ograniczenia za pomocą 'assign' i' get', czy też napotkasz niektóre ograniczenia w pewnym momencie? – joran
Wierzę, że fraza "wystarczy liny, aby powiesić się z" :-P –
? przypisać: "Nie ma ograniczeń na" imię ": to c być non-syntaktyczną nazwą (patrz "make.names"). ". Jest to oczywiście kłamstwo: c = paste (rep (litery, 10000), collapse = ""); assign (c, 123) produkuje: Błąd w przypisaniu (c, 123): nazwy zmiennych są ograniczone do 10000 bajtów – Spacedman
Następujące osoby mogą nie odpowiedzieć bezpośrednio na twoje pytanie, ale bardzo nam pomogły. Wypróbuj komendę exists()
, aby sprawdzić, czy coś już istnieje i w ten sposób wiesz, że nie powinieneś używać nazw systemowych dla swoich zmiennych lub funkcji. Funkcja Przykład ...
> exists('for')
[1] TRUE
>exists('myvariable')
[1] FALSE
Nie rozumiem, dlaczego ta odpowiedź została odrzucona, dla mnie jest to w każdym razie użyteczna informacja. – Halberdier
Stosując make.names() z wbudowanym w obudowie bazowej może pomóc:
is_valid_name<- function(x)
{
length_condition = if(getRversion() < "2.13.0") 256L else 10000L
is_short_enough = nchar(x) <= length_condition
is_valid_name = (make.names(x) == x)
final_condition = is_short_enough && is_valid_name
return(final_condition)
}
R Pytania 7,14: http://cran.r-project.org /doc/FAQ/R-FAQ.html#What-are-valid-names_003f – James
Możesz być także zainteresowany dyskusją tutaj: http://stackoverflow.com/questions/8396577/check-if-character-value-is -a-valid-r-object-name/8396658 # 8396658 –
Powinieneś był znaleźć link do '? make.names' na stronie pomocy dla' read.table'. Strona pomocy, którą zawsze mam trudności z zapamiętaniem, to ta, która opisuje dozwolone znaki ucieczki, a odpowiedź brzmi "? Cytaty". –