我很抱歉,如果这是一个模糊的问题,因为我是R的新手。在尝试R时,我发现了一个奇怪的行为。当我创建一个像:
这样的函数时myfunction <- function(a,b){
print(a,b)
}
并称之为:
myfunction(b = 10, a = 20)
它返回结果20,但如果我只是通过直接将它分配给变量来调用它而不是函数:
a <- 20
b <- 10
print(a, b)
我收到错误:
Error in print.default(a, b) : invalid 'digits' argument
此外,我已经了解到,可以通过以下方式在同一行中打印多个变量:
sprintf("%i %i",a, b)
所以这是一个错误,它出现在函数调用中,结果作为第一个参数?
答案 0 :(得分:3)
它可能揭示了在不同场景中如何处理参数的一些潜在差异,但我不认为它是一个错误。
如果您打算打印这两个值,请考虑更改:
print(a,b)
类似于:
print(paste(a,b))
来自?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.
...
因此,R期望您实际要打印的所有内容都包含在第一个变量(x
)中。
根据您的结果和一些评论,显然在某些情况下,第二个变量被接受为有效的digits
参数值,而在其他情况下则不是。{
虽然这有点奇怪,但更重要的一点是print(a,b)
不是打印多个值的语法正确方法。