在 R 中使用 $ 和 %% 运算符

Use of $ and %% operators in R

我已经使用 R 工作了大约 2 个月,在理解 $%% 术语时遇到了一些麻烦。

我知道我可以使用 $ 术语从函数中提取特定值(例如 t.test(x)$p.value),但我不确定这是否是一个通用定义。我也知道可以用这个来指定拉取某些数据。

我也很好奇 %% 术语的使用,特别是,如果我在它之间放置一个值(例如 %x%),我知道将它用作调制器或余数7 %% 5 returns 2。可能是我孤陋寡闻,这不是真的?

任何帮助或文献链接将不胜感激。

注意:我已经搜索了几个小时了,如果找不到,请见谅!

首先,$ 运算符用于选择列表的元素。参见 help('$')

%% 运算符是模运算符。参见 help('%%')

您实际上并不是从函数中提取值,而是从函数 returns 的列表对象中提取值。 $ 实际上是一个带有两个参数的中缀,即它前后的值。它是一个方便的函数,旨在对其第二个参数使用非标准评估。之所以称为非标准,是因为 $ 之后未加引号的字符在用于从第一个参数中提取命名元素之前首先被引用。

 t.test  # is the function
 t.test(x) # is a named list with one of the names being "p.value"
 

可以通过以下三种方式之一提取值:

 t.test(x)$p.value
 t.test(x)[['p.value']]  # numeric vector
 t.test(x)['p.value']  # a list with one item

 my.name.for.p.val <- 'p.value'
 t.test(x)[[ my.name.for.p.val ]]

当您用侧翼符号“%”包围一组字符时,您可以创建自己的矢量化中缀函数。如果你想要一个默认为 na.rm=TRUE 的 pmax,请执行以下操作:

 '%mypmax%' <- function(x,y) pmax(x,y, na.rm=TRUE)

然后不带引号使用它:

> c(1:10, NA) %mypmax% c(NA,10:1)
 [1]  1 10  9  8  7  6  7  8  9 10  1

“$”运算符用于 select 列表中的特定元素或包含子数据组件的任何其他数据组件。 例如:数据是一个列表,其中包含一个名为 MATRIX 的矩阵和其他内容。 但是为了得到我们写的矩阵, 打印(数据$矩阵)

%% 运算符是取模运算符;它提供了余数。 例如:打印(7%%3) 将打印 1 作为输出