用奇怪的名字定义/调用对象?

时间:2012-07-24 15:35:54

标签: r

我正要问另一个问题,我脑海中浮现出这个问题。我们如何定义具有奇怪名称的对象。例如,假设我们想要调用一个对象“test ^#”。如果我想定义它,我会使用“”:

"test^#" <- 10

现在的问题是如何调用这个对象? 如果我们再次使用“”,则R将其视为字符串而不是对象的名称。 虽然我看到了能够在对象名称中使用符号的实际应用,但在这一点上,这更多的是出于好奇心的问题。

谢谢,

1 个答案:

答案 0 :(得分:7)

使用反引号:

"test^#" <- 10
ls()
[1] "test^#"

现在使用它:

`test^#`
[1] 10

您还可以使用反引号来引用具有非标准名称的数据框(或列表)中的列。例如:

iris$`Sepal length` <- iris$Sepal.Length
str(iris)
'data.frame':   150 obs. of  6 variables:
 $ Sepal.Length: num  5.1 4.9 4.7 4.6 5 5.4 4.6 5 4.4 4.9 ...
 $ Sepal.Width : num  3.5 3 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 ...
 $ Petal.Length: num  1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 ...
 $ Petal.Width : num  0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 ...
 $ Species     : Factor w/ 3 levels "setosa","versicolor",..: 1 1 1 1 1 1 1 1 1 1 ...
 $ Sepal length: num  5.1 4.9 4.7 4.6 5 5.4 4.6 5 4.4 4.9 ...


summary(iris$`Sepal length`)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
  4.300   5.100   5.800   5.843   6.400   7.900 

如果你想要一些非常奇怪的东西,比如在名称中嵌入反引号,那么你可能不得不使用get()来引用它:

"test^`#" <- 20

get("test^`#")
[1] 20