我很抱歉,如果这是一个模糊的问题,因为我是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)
我收到一个错误:
Run Code Online (Sandbox Code Playgroud)Error in print.default(a, b) : invalid 'digits' argument
此外,我已经读过,可以通过以下方式在同一行中打印多个变量:
sprintf("%i %i",a, b)
Run Code Online (Sandbox Code Playgroud)
所以这是一个错误,它出现在函数调用中,结果作为第一个参数?
这可能揭示了在不同情况下如何处理参数的一些根本差异,但我认为这不是错误。
如果要打印两个值,请考虑更改:
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)不是打印多个值的语法正确方法。