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

时间:2015-07-09 20:12:37

标签: r operators

我已经和R一起工作了大约2个月,并且在确定$%%条款方面遇到了一些麻烦。

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

我也对使用%%术语感到好奇,特别是如果我在它之间放置一个值(例如%x%)我知道将它用作调制器或其余的例如7 %% 5返回2。也许我是无知的,这不是真的吗?

非常感谢任何文学方面的帮助或链接。

注意:我一直在搜索这几个小时,如果我找不到它,请原谅!

2 个答案:

答案 0 :(得分:7)

您实际上并不是从函数中提取值,而是从函数返回的列表对象中提取值。

 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[['p.value']]  # numeric vector
 t.test['p.value']  # a list with one item

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

当你围绕一组带有侧翼“%”的字符时 - 你可以创建自己的矢量化中缀函数。如果你想要一个pmax,其中defautl是na.rm = TRUE,那就这样做:

 '%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

答案 1 :(得分:1)

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

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