"参数x"长度函数

时间:2016-01-17 06:20:11

标签: r

我正在研究" The Book on R"中的矢量部分,该部分给出了以下示例:

length(x=c(3,2,8,1)) 
# [1] 4

length(x=5:13) 
# [1] 9

foo <- 4 

bar <- c(3,8.3,rep(x=32,times=foo),seq(from=-2,to=1,length.out=foo+1)) 

length(x=bar) 
# [1] 11

但是,如果输入length(c(3,2,8,1))无论如何都会为您提供输出4,为什么要添加x=x=的目的是什么?起初我认为它与变量有关但R没有反映x在我输入length(x=c(3,2,8,1))之后持有向量(3,2,8,1)。

为什么length(y=c(5:13))不起作用但会出错:

  

长度错误(y = 5:13):提供的参数名称&#39; y&#39;不符合&#39; x&#39;

1 个答案:

答案 0 :(得分:2)

R为函数命名了参数。检查this section of R's doc for some information on the subject

所以x只是赋予函数length的第一个参数的名称,它与您的环境中可能被命名为x的任何变量无关。

总的来说,这是一个非常方便的功能:

  • 它允许您以任何顺序传递参数(如果使用arg = ...语法)
  • 函数的编写者可以向用户提供关于期望什么类型的参数的提示
  • 与自动完成相结合,有助于记住函数的语法和用法
  • 并且它是可选的,因为您也可以在不命名的情况下传递参数:

matrix(data = 1:12, ncol = 3)  # is equivalent to:
matrix(1:12,,3)  

你也可以用它来写一些令人困惑的东西(当然,不推荐),例如:

x <- 1:3
length(x = x)  # 3
length(x = (x <- 1:4))  # 4 ...
x  # 1 2 3 4