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

Sea*_*ean 4 r operators

我和R一起工作了大约2个月,并且在掌握条款$%%条款方面遇到了一些麻烦.

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

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

任何帮助或文学链接将不胜感激.

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

42-*_*42- 9

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

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

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

 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 ]]
Run Code Online (Sandbox Code Playgroud)

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

 '%mypmax%' <- function(x,y) pmax(x,y, na.rm=TRUE)
Run Code Online (Sandbox Code Playgroud)

然后在没有引号的情况下使用它:

> c(1:10, NA) %mypmax% c(NA,10:1)
 [1]  1 10  9  8  7  6  7  8  9 10  1
Run Code Online (Sandbox Code Playgroud)