Это новый синтаксис для явного относительного импорта . Это означает импорт из текущего пакета.
Операторы в R - это просто функции.
Они эквивалентны:
> x <- list(a=1,b=2)
> x[1]
$a
[1] 1
> `[`(x,1)
$a
[1] 1
Обратные ссылки необходимы только для предотвращения интерпретации синтаксического анализатора (например, чтобы сказать, что это функция name, чтобы не начинать интерпретацию [
преждевременно).
Будучи функцией, он следует тем же объектно-ориентированным правилам (в данном случае S3), как и все остальное.
> methods(`[`)
[1] [.acf* [.arrow* [.AsIs [.bibentry* [.cluster* [.data.frame [.data.table*
[8] [.Date [.difftime [.envlist* [.factor [.formula* [.fractions* [.getAnywhere*
[15] [.gList* [.gpar* [.gtable* [.hexmode [.idf* [.indexed* [.insensitive*
[22] [.ITime* [.listof [.noquote [.numeric_version [.octmode [.pdf_doc* [.person*
[29] [.POSIXct [.POSIXlt [.quoted* [.raster* [.roman* [.shingle* [.simple.list
[36] [.split* [.terms* [.trellis* [.ts* [.tskernel* [.uneval* [.unit*
[43] [.unit.arithmetic* [.unit.list* [.vpPath*
Non-visible functions are asterisked
+
, =
и т. д. и другие операторы работают так же.
Квадратные скобки на самом деле являются функцией, первым аргументом которой является подмножество объекта. Последующие аргументы - это индекс этого подмножества.
# For example, if M is a matrix
M[1, 2] # extracts the element at row 1, col 2
# is the same as
`[`(M, 1, 2)
# Try them!
Теперь посмотрим на аргументы lapply
:
args(lapply)
# function (X, FUN, ...)
Все представленные в этих точках передаются функции FUN
в качестве аргументов.
Таким образом, когда FUN="["
первый аргумент "["
является текущим элементом списка (выполняется повторение), т. е. подмножество объекта. В то время как последующие аргументы являются индексами "["
"/"(1,2)
и1/2
иdo.call("/",list(1,2))
все дают одинаковый результат. – thelatemail 9 October 2013 в 03:35Reduce('/',list(1,2))
,Map('/',1,2)
и все *apply
s, которые также принимают функции в качестве аргументов и, возможно, больше (?) ... – Frank 9 October 2013 в 03:52