&引用+&引用;R中的Continue选项

&引用+&引用;R中的Continue选项,r,console,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.

我是一个初学者,最近开始使用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")) 
如果我不加“+”,这就不行了。显然,上面的“+”似乎是一个“管道”操作符

现在的挑战是,我不能用谷歌搜索这个或搜索,因为两个搜索引擎都认为“+”是一个or运算符

有人能解释一下“+”什么时候是“continue”的操作符,什么时候是“piping”的操作符吗


如有任何想法和详细解释,我将不胜感激。这让我非常困惑。

通常在R中,+表示加法。Ggplot2是一种特殊情况,因为它已覆盖默认行为,因此+表示可以将对象添加到一起,以构建打印图层。在幕后,ggplot处理每个单独的函数调用,将它们放入一个列表中,然后一起执行

现在来解释一下你的代码问题

+运算符通常表示加法,如1+1=2。其次,单个函数调用可以换行,而不需要任何连续运算符。因此,考虑到这些要点,在函数调用中间加上加号是没有意义的。 R将采用以下代码:

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

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

为了说明这一点,我选中continue提示符的选项,并将其更改为示例:

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+Enter)。一些初学者不知道如何使用RStudio,只需在控制台中编写即可。

非常有用,另一个Akrun,感谢链接,但这两个链接根本没有帮助。其中一个链接谈到通过按Esc键来摆脱“+”,而另一个链接只是说明代码的问题(除了“+”)。你能帮我回答我的问题吗?另外,我认为这些问题不应该联系在一起。问题是相似的,但答案涵盖了不同的主题。我看到这些线索仍然是相互联系的。我不知道你所说的“重新打开它”是什么意思…@watchtower,任何指向StackOverflow上其他内容的链接都会作为评论或答案的一部分出现在链接部分。Nathan感谢你的回复。我还是不明白——如果你说的“+”是正确的,那么场景1中的“修改”版本应该不起作用,但它确实起作用了。想法?你的代码实际上并没有被修改-控制台只是显示一个“+”提示符,指示函数跨越多行。谢谢Roland。你说得对--我确实在RStudio中使用了Ctrl+Enter。如果我理解正确,a)换行符在控制台中显示为“+”,因为这是continue运算符。b) 如果我在代码中显式使用“+”,它将被视为一个函数。c) 我相信ggplot2使用“+”表示管道。我说的对吗?请读我的答案。a) 它不是“操作员”。这是一个输入提示。对不起,这是一个输入错误。我的意思是输入“提示”。我知道“+”不是a)中的运算符。谢谢罗兰。
windows()
ggplot(data=mtcars, aes(x=wt, y=mpg))   +
  geom_point()  +
  labs(title="Automobile Data", x="Weight", y="Miles Per Gallon")
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"))
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