将赋值包含在括号中会在控制台中返回该赋值的输出

问题描述 投票:0回答:2

我不知道如果您将赋值放在括号中,该赋值的值将在控制台中打印出来。见下文;这种行为的原因是什么?

a <- 1
b = 2
assign("c", 3)

(a <- 1)
#> [1] 1
(b = 2)
#> [1] 2
(assign("c", 3))
#> [1] 3

reprex 包于 2023 年 3 月 1 日创建(v2.0.1)

r variable-assignment
2个回答
7
投票

这是关于括号和大括号的解释:https://stat.ethz.ch/R-manual/R-devel/library/base/html/Paren.html

描述

左括号 ( 和左大括号 { 是 R 中的原始函数。

实际上,( 在语义上等价于恒等函数(x) x,而 { 稍微有趣一些,请参阅示例。

使用方法

(...)

{ ... }

价值

对于 (,评估参数的结果。它具有可见性设置, 因此,如果在顶层使用,将自动打印。

对于 {,最后一个表达式的计算结果。这有 上次评估的可见性。

示例

f <- get("(")
e <- expression(3 + 2 * 4)
identical(f(e), e)
#> [1] TRUE

do <- get("{")
do(x <- 3, y <- 2*x-3, 6-x-y); x; y
#> [1] 0
#> [1] 3
#> [1] 3

## note the differences
(2+3)
#> [1] 5
{2+3; 4+5}
#> [1] 9
(invisible(2+3))
#> [1] 5
{invisible(2+3)}

2
投票

这是设计使然。 在文档中找到它并不容易,但某处有一个解释,

(something_with_output)
调用“打印”命令。

FWIW 我发现在使用代码包含

return(invisible(stuff))
的闭包时它很有用。

© www.soinside.com 2019 - 2024. All rights reserved.