2016-03-25 18 views
13

Ben backticks R. yapmak anlamaya çalışıyorumBacktick'ler R'de ne yapar?

Ben R konsolunda, bu Örneğin

R.

için ?Quotes dokümantasyon sayfasında açıklanmıştır değil söyleyebileceğim

:

"[[" 
# [1] "[[" 
`[[` 
# .Primitive("[[") 

O eşdeğer dönen gibi görünüyor: Bunlar kelimesi kelimesine eşdeğerdir

get("[[") 
+0

yardım ("' ") – hrbrmstr

+1

' sırasına göre olabilir ("\' ")' ile aynı doc sayfasını getirir?Tamamen açık değildi Quotes', – Megatron

+0

o q cevapsız. özürlerimi. ama ne yaptığıyla ilgili iyi bir açıklama. – hrbrmstr

cevap

8

kullanarak zamanki gibi

temp[[1]] 

özü elemanı biri Bir çift backtick, aksi belirtilmedikçe veya yasa dışı olan sembollerin isimlerini veya kombinasyonlarını ifade etmenin bir yoludur. if gibi kelimeler, yasa dışıyken c a t gibi sözdizimsel olmayan kombinasyonlar içerir. Ayrılmış ve yasa dışı olan bu iki kategori, R belgelerinde non-syntactic names olarak belirtilmiştir. Names and Identifiers:

Identifiers consist of a sequence of letters, digits, the period 
(‘.’) and the underscore. They must not start with a digit nor 
underscore, nor with a period followed by a digit. Reserved words 
are not valid identifiers. 

The definition of a _letter_ depends on the current locale, but 
only ASCII digits are considered to be digits.  

Such identifiers are also known as _syntactic names_ and may be 
used directly in R code. Almost always, other names can be used 
provided they are quoted. The preferred quote is the backtick 
(‘`’), and ‘deparse’ will normally use it, but under many 
circumstances single or double quotes can be used (as a character 
constant will often be converted to a name). One place where 
backticks may be essential is to delimit variable names in 
formulae: see ‘formula’. 

Bu düz yazı altında ?Quotes ters tırnak hakkında bilgi ihtiva etmez

`c a t` <- 1 # is valid R 

ve söz konusu bir yorumcu olarak

> `+` # is equivalent to typing in a syntactic function name 
function (e1, e2) .Primitive("+") 

Böylece,

, biraz zordur ayrıştırmak için. Bunun anlamı R için bir ismin bir isim olarak ayrıştırılması, 1) harf basamaklarının bir sırası, dönem ve altçizgi olması, 2) dilde ayrılmış bir kelime olmamasıdır. Aksi takdirde, isim olarak ayrıştırmak için backtickler kullanılmalıdır.

da ?Reserved kontrol:

Reserved words outside quotes are always parsed to be references 
    to the objects linked to in the ‘Description’, and hence they are 
    not allowed as syntactic names (see ‘make.names’). They *are* 
    allowed as non-syntactic names, e.g. inside backtick quotes. 

ek olarak, Advanced R backticks expressions, environments ve functions kullanılan bazı örnekler vardır.

5

. Örneğin ... Bu deneyin:

df <- data.frame(20a=c(1,2),b=c(3,4)) 

hatayı verir

df <- data.frame(`20a`=c(1,2),b=c(3,4)) 

hatayı İşte

3

vermez uygunsuz kelime kullanarak eksik bir cevaptır: backticks Eğer ki R gösterebilir standart olmayan bir şekilde bir işlev kullanarak. Örneğin, burada [[ bir kullanımıdır, liste subsetting fonksiyonu:

temp <- list("a"=1:10, "b"=rnorm(5)) 

özü elemanı bir, [[ fonksiyonunu

`[[`(temp,1)