这可能是一个蹩脚的问题,但无论如何。在 RStudio 中,我刚刚注意到键入一个数字 .. 和另一个数字会将字符的语法突出显示从深蓝色更改为 .. 及其后面的数字的淡蓝色。
例如,这是一个具有这种独特颜色的数字:
4..4
“..4”部分具有淡蓝色。
我正在使用默认语法着色。我尝试在解释器中引入这样的常量,但我只收到错误“错误:“4..5”中的意外数字常量,并且带有“两个点”或..的查询似乎对谷歌不太友好。
有谁知道“..”的用法是什么,如果有的话?
这可能是一个蹩脚的问题,但无论如何。在 RStudio 中,我刚刚注意到键入一个数字 .. 和另一个数字会将字符的语法突出显示从深蓝色更改为 .. 及其后面的数字的淡蓝色。
例如,这是一个具有这种独特颜色的数字:
4..4
“..4”部分具有淡蓝色。
我正在使用默认语法着色。我尝试在解释器中引入这样的常量,但我只收到错误“错误:“4..5”中的意外数字常量,并且带有“两个点”或..的查询似乎对谷歌不太友好。
有谁知道“..”的用法是什么,如果有的话?
..4
将是 R 解析器中的保留字。下面?Reserved
你会发现
...
和..1
等..2
,用于引用从调用函数向下传递的参数。
# Function will return nth element from ... ( n MUST be a named argument)
f <- function( ... , n = NULL )
return( eval( parse( text = paste0( ".." , n ) ) ) )
# Return third element of ...
f( n = 3 , 1:3 , 3:1 , 10:15 )
#[1] 10 11 12 13 14 15
# Try to return element that is out of bounds
f( n = 4 , 1:3 , 3:1 , 10:15 )
#Error in eval(expr, envir, enclos) :
# the ... list does not contain 4 elements
既然你知道它是什么,那么你如何使用它呢?由约翰·钱伯斯提供;
“名称
..1
指的是第一个匹配的参数,..2
第二个等。你应该避免这种晦涩的约定,这通常可以通过编写一个带有一些普通参数名称的函数来完成,然后用"..."
”调用它数据分析软件:使用 R 编程,John M. Chambers,Springer-Verlag,纽约,2008 年。
摘自第 457 页。
..n
指 中的第 n 个元素...
。
这是西蒙答案的一个稍微简单的替代方案,避免了评估/解析。
f <- function(...)
{
message("dots = ")
print(list(...)) # Notice that you need to convert ...
# to a list or otherwise evaluate it
message("..1 = ")
print(..1)
message("..2 = ")
print(..2)
}
f(runif(5), letters[1:10])
## dots =
## [[1]]
## [1] 0.94707123 0.09626337 0.41480592 0.83922757 0.94635464
##
## [[2]]
## [1] "a" "b" "c" "d" "e" "f" "g" "h" "i" "j"
##
## ..1 =
## [1] 0.94707123 0.09626337 0.41480592 0.83922757 0.94635464
## ..2 =
## [1] "a" "b" "c" "d" "e" "f" "g" "h" "i" "j"
接受的答案是有道理的。
但是我在完全不同的上下文中看到了两个点(即不在函数内部),如下所示..prop..
:
ggplot(data=diamonds) +
geom_bar(
mapping=aes(x=cut, y=..prop.., group=1)
)
原来..prop..
是由's转换创建的特殊变量ggplot
stat_count
。
stat_count
提供两个内部变量..count..
和..prop..
,分别指计数和比例。不要对..name..
符号感到惊讶,它用于防止与您自己的列混淆(不要用奇怪的名称命名您自己的列..count..
!)
(记住R 中的变量名可以包含句点。我来自 Python 背景,所以这个双句点看起来像 Python 的双下划线约定:__prop__
,一种用于标记特殊/“私有”变量/“名称混乱”这些变量的技术)