Прежде всего, в общем,
var <- expr
вычисляет выражение R ехрг и присваивает результат переменной вар. Если оператор возникает внутри функции, то var становится локально-локальной переменной, в противном случае он становится глобальной переменной.
c(0,0,0,1,0,1,0,1,1,1,1,0)
Объединяет 12 double
литералов в double
вектора в указанном порядке.
matrix(c(0,0,0,1,0,1,0,1,1,1,1,0),4,3, byrow=T)
Создает matrix
из вектора с 4-х строк и 3 столбцов, заполнение матрицы по одной строке за один раз сверху вниз (слева направо в пределах каждой строки).
nrow(patterns)
Возвращает количество строк в матрице patterns
.
sample(nrow(patterns))
Возвращает integer
вектора nrow(patterns)
элементов, по существу случайным скремблирования множества целых чисел от 1 до nrow(patterns)
.
patterns[sample(nrow(patterns)),]
Индекс patterns
. Этот тип индексации в основном позволяет вам извлечь «подматрицу» исходной матрицы. Аргумент слева от запятой указывает строки для выбора, а справа указывает столбцы для выбора. Пропущенный аргумент эквивалентен заданию всех индексов этого измерения. Это конкретное выражение выбирает все строки и все столбцы в матрице, но скремблирует порядок строк.
t(ps)
Переводит матрицу ps
.
as.vector(t(ps))
Фланец транспонированной матрицы в вектор. Обратите внимание, что это по столбцу, что противоположно тому, как изначально была построена матрица из вектора. Обратите внимание, что поскольку это последний оператор в прилагаемой функции, он автоматически станет возвращаемым значением функции при ее выполнении.
function(i) {
ps <- patterns[sample(nrow(patterns)),]
as.vector(t(ps))
}
Определяет функцию, принимая один параметр i
и выполняет два заявления я объяснил выше. Обратите внимание, что patterns
эффективно закрывается этой функцией.
1:100
Создает integer
вектор, состоящий из 100 элементов, целых чисел от 1 до 100.
lapply(1:100, function(i) { ... })
Выполнение функции, заданную во втором аргументе один раз для каждого элемента первого аргумента, передавая элемент в качестве первого аргумента функции, когда она вызывается для этого конкретного элемента. В этом случае результатом будет функция 100 раз, передавая целые числа от 1 до 100 в качестве аргумента для параметра i
для каждого соответствующего вызова. lapply()
всегда возвращает возвращаемое значение каждого отдельного выполнения функции, объединенного в объект list
.
unlist(...)
Преобразование list
в единый гомогенный (без списка) объект. Как это работает, зависит от точной природы его аргумента, но в этом случае он будет комбинировать векторы, возвращаемые каждым вызовом функции в один вектор.
input[-1]
Возвращает весь вектор input
исключая его первый элемент.
input[1]
Возвращает первый элемент вектора input
.
c(input[-1],input[1])
Объединение двух предыдущих значений. Конечным результатом является то, что первый элемент был перенесен в конец вектора.
cbind(input, teach)
Выполняет «связывание столбцов» двух вышеупомянутых векторов. Это означает, что каждый вектор будет обрабатываться как матрица length(vector)
-by-1, и две матрицы будут объединены в матрицу -by-2. (Если длины не были равны, функция все равно будет успешной, но она будет перерабатывать любые короткие векторные входы и печатать предупреждающее сообщение.)
В какой части вы не понимаете? Если это буквально каждая строка, я предлагаю вам начать с базового учебника R (возможно [Введение в R] (http://cran.r-project.org/doc/manuals/r-release/R-intro.html)). Чтобы просмотреть страницу справки для любой команды, вы можете ввести '? Matrix' в R, чтобы вызвать справку для этой конкретной функции. – MrFlick
Большое вам спасибо. Например, какова функция этой строки: c (input [-1], input [1]) – David
Если это ваш конкретный вопрос, пожалуйста, обновите свое сообщение, чтобы указать это. Затем другие могут публиковать ответ ниже, и вы можете принять «правильный» ответ на свой вопрос. – MrFlick