Использование ‘[‘ квадратная скобка как функция для lapply в R
Я видел, что функция, используемая в R, используется для извлечения элементов из матриц, которые существуют в списке матриц.
Например, у меня есть список из 3 (2×2) матриц, и я хочу извлечь элемент [1,2] из каждой из этих 3-х матриц.
Код: list1 = lapply(mylist, '[', 1,2)
работает просто отлично. Он возвращает список с этими тремя элементами.
- Евклидово расстояние двух векторов
- Прочтите файл csv в R со столбцом валюты как числовой
- Как назначить значения динамическим именам переменных
- Какая польза от этого?
- Ошибка в model.frame.default ... переменная длина отличается
Я пытаюсь исследовать, что именно это делает. Google не помог и не использовал ?'['
В помощи R не слишком объяснительно. Я не вижу, как '['
является функцией в R, поэтому код не интуитивно понятен.
- Поиск локальных максимумов и минимумов
- Ошибка: использование стека C слишком близко к пределу
- Лучший способ конвертировать список в вектор?
- Подавить вывод одной команды в R
- Замените все значения 0 на NA
- Как я могу прерывать текущий код в R с помощью команды клавиатуры?
- Как вы конвертируете даты / время из одного часового пояса в другой в R?
- Матрица корреляции сюжетов в граф
Квадратные скобки на самом деле являются функцией, первым аргументом которой является подмножество объекта. Последующие аргументы – это индекс этого подмножества.
# 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!
Теперь рассмотрим аргументы:
args(lapply) # function (X, FUN, ...)
Все, что представлено в этих точках, передается функции FUN
качестве аргументов.
Таким образом, когда FUN="["
, первый аргумент "["
является текущим элементом списка (выполняется повторение), т. Е. Подмножество объекта. В то время как последующие аргументы являются индексами для "["
Операторы в R являются просто функциями.
Они эквивалентны:
> x <- list(a=1,b=2) > x[1] $a [1] 1 > `[`(x,1) $a [1] 1
Обратные ссылки необходимы только для предотвращения интерпретации анализатором (например, чтобы сказать, что это имя функции, чтобы не начинать интерпретацию [
преждевременно).
Будучи функцией, он следует тем же объектно-ориентированным правилам (в данном случае 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
+
, =
и т. д., и другие операторы работают так же.