我正在研究" 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;
答案 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