首先,总的来说,
var <- expr
计算 R 表达式expr并将结果分配给变量var。如果语句出现在函数内部,则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 )
从具有 4 行和 3 列的向量创建一个matrix
,从上到下(每行内从左到右)一次填充一行矩阵。
nrow(patterns)
patterns
返回矩阵中的行数。
sample(nrow(patterns))
通过基本上从 1 到 的整数集随机打乱来返回元素integer
向量。nrow(patterns)
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 矩阵,两个矩阵将组合成一个length(vector)
-by-2 矩阵。(如果长度不相等,该函数仍然会成功,但它会回收任何短向量输入并打印警告消息。)