R中的“+”继续选项

时间:2016-08-04 04:41:18

标签: r console

我是初学者,最近开始使用R代替Stata,因为它具有开源性质。

我对“+”继续符号有点困惑。

以下是我的数据:

head(mtcars)
                   mpg cyl disp  hp drat    wt  qsec vs am gear carb
Mazda RX4         21.0   6  160 110 3.90 2.620 16.46  0  1    4    4
Mazda RX4 Wag     21.0   6  160 110 3.90 2.875 17.02  0  1    4    4
Datsun 710        22.8   4  108  93 3.85 2.320 18.61  1  1    4    1
Hornet 4 Drive    21.4   6  258 110 3.08 3.215 19.44  1  0    3    1
Hornet Sportabout 18.7   8  360 175 3.15 3.440 17.02  0  0    3    2
Valiant           18.1   6  225 105 2.76 3.460 20.22  1  0    3    1

让我们考虑四种情况:

场景1: 我注意到如果我编写以下代码,RStudio会自动附加“+”:

attach(mtcars)  
  cyl.f <- factor(cyl, levels= c(4,6,8),
                labels = c("4 cylinder", "6 cylinder",
                           "8 cylinder")) 

变为:

cyl.f <- factor(cyl, levels= c(4,6,8),
+                 labels = c("4 cylinder", "6 cylinder",
+                            "8 cylinder"))

如上所示,RStudio会自动附加“+”

场景2: 如果我在代码的末尾添加“+”,那么由于一些奇怪的原因它不起作用:

cyl.f <- factor(cyl, levels= c(4,6,8),    +
                 labels = c("4 cylinder", "6 cylinder",       +
                            "8 cylinder"))

这会引发错误。

场景3: 如果我在代码的开头添加“+”,则由于一些奇怪的原因它不起作用:

cyl.f <- factor(cyl, levels= c(4,6,8),    
          +       labels = c("4 cylinder", "6 cylinder",       
           +                 "8 cylinder"))

这会引发错误。这是可以理解的,因为RStudio会自动添加另一个“+”继续运算符。

情景4:

windows()
ggplot(data=mtcars, aes(x=wt, y=mpg))   +
  geom_point()  +
  labs(title="Automobile Data", x="Weight", y="Miles Per Gallon")

如果我不添加“+”,则不起作用。显然,似乎“+”是上面的“管道”操作员。

现在,挑战在于我无法谷歌搜索或搜索SO,因为搜索引擎都认为“+”是一个OR运算符。

有人可以解释,当“+”是“继续”的操作员时,以及当它是“管道”的操作员时。

我很感激任何想法和详细解释。这对我来说非常困惑。

2 个答案:

答案 0 :(得分:7)

您将代码与R控制台显示的提示混淆。换行符后控制台中自动出现的+是一个控制台提示符,表示需要进一步输入。它不是代码的一部分。

为了说明这一点,我检查了继续提示的选项并更改了一个例子:

options("continue")
options(continue = "% ")
data.frame(a = 1,
           b = 2)

这在控制台中显示如下:

> options("continue")
$continue
[1] "+ "

> options(continue = "% ")
> data.frame(a = 1,
%            b = 2)
  a b
1 1 2

如您所见,继续提示已从+更改为%。请注意,提示始终位于控制台中的相同位置。它们始终是任何输入行的第一个字符,默认情况下,它们后跟一个空格字符。

当部分代码+运算符实际上是一个函数时,它通常会进行算术运算,但可以为不同的行为定义方法。这就是ggplot2的作用。

PS:如果您正在使用RStudio,我希望您创建了一个新文件并编写了一个脚本,您可以从中将代码发送到控制台(例如,按 Ctrl + 输入)。一些初学者不知道如何使用RStudio并只是在控制台中写。

答案 1 :(得分:1)

通常在R中,+仅表示添加。 Ggplot2是一个特殊情况,因为它覆盖了默认行为,因此+意味着您可以将对象添加到一起,以构建绘图的图层。在幕后,ggplot正在进行每个单独的函数调用,将它们放入一个列表中,然后一起执行它们。

http://docs.ggplot2.org/current/gg-add.html

所以,现在来解释你的代码问题。

+运算符通常表示加法,如1 + 1 = 2.其次,单个函数调用可以换行而不需要任何连续运算符。因此,考虑到这一点,在函数调用的中间添加一个加号毫无意义。

R将采用此代码:

cyl.f <- factor(cyl, levels= c(4,6,8),    +
             labels = c("4 cylinder", "6 cylinder",       +
                        "8 cylinder"))

并将其转换为:

cyl.f <- factor(cyl, levels= c(4,6,8), + labels = c("4 cylinder", "6 cylinder", + "8 cylinder"))

其次,你对连续代码的猜测是不正确的。它更像是一个延续指标,只是R表示代码是同一个函数调用的一部分。