这是预期的行为吗?

Var*_*hin 11 r

我很抱歉,如果这是一个模糊的问题,因为我是R的新手.在尝试RI时发现了一个奇怪的行为.当我创建一个像这样的函数:

myfunction <- function(a,b){
    print(a,b)
}
Run Code Online (Sandbox Code Playgroud)

并称之为:

myfunction(b = 10, a = 20)
Run Code Online (Sandbox Code Playgroud)

它返回结果20,但如果我只是通过直接将它分配给变量来调用它而不是函数:

a <- 20
b <- 10
print(a, b)
Run Code Online (Sandbox Code Playgroud)

我收到一个错误:

Error in print.default(a, b) : invalid 'digits' argument
Run Code Online (Sandbox Code Playgroud)

此外,我已经读过,可以通过以下方式在同一行中打印多个变量:

sprintf("%i %i",a, b)
Run Code Online (Sandbox Code Playgroud)

所以这是一个错误,它出现在函数调用中,结果作为第一个参数?

fly*_*ger 5

这可能揭示了在不同情况下如何处理参数的一些根本差异,但我认为这不是错误。

如果要打印两个值,请考虑更改:

print(a,b)
Run Code Online (Sandbox Code Playgroud)

像这样:

print(paste(a,b))
Run Code Online (Sandbox Code Playgroud)

来自?print.default

# S3 method for default
print(x, digits = NULL, quote = TRUE,
  na.print = NULL, print.gap = NULL, right = FALSE,
  max = NULL, useSource = TRUE, …)

x       the object to be printed.

digits  a non-null value for digits specifies the minimum number of 
        significant digits to be printed in values. The default, NULL, uses 
        getOption("digits"). (For the interpretation for complex numbers see 
        signif.) Non-integer values will be rounded down, and only values 
        greater than or equal to 1 and no greater than 22 are accepted.
...
Run Code Online (Sandbox Code Playgroud)

因此,R希望您实际要打印的所有内容都包含在第一个变量(x)中。

根据您的结果和一些评论,显然在某些情况下第二个变量被接受为有效digits参数值,而在其他情况下则不接受。

尽管这有点奇怪,但更重要的一点是,这print(a,b)不是打印多个值的语法正确方法。