首先,在一般情況下,
var <- expr
評估R的表達EXPR並將結果賦予變量變種。如果語句出現在函數內部,則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))
返回nrow(patterns)
元件的integer
矢量,由隨機基本上擾整數集的從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)
的1矩陣,並且這兩個矩陣將被合併爲一個length(vector)
的二維矩陣。 (如果長度不相等,功能仍然會成功,但它會回收任何短向量輸入並打印警告消息。)
哪一部分你不明白?如果是字面上的每一行,我建議你從一個基本的R教程開始(也許[An Introduction to R](http://cran.r-project.org/doc/manuals/r-release/R-intro.html) )。要查看任何命令的幫助頁面,可以在R中輸入'?matrix'來爲該特定功能提供幫助。 – MrFlick 2015-02-24 21:48:38
非常感謝。例如,這一行的功能是什麼:c(input [-1],input [1]) – David 2015-02-24 21:50:49
如果這是您的具體問題,請更新您的帖子以表明這一點。然後其他人可以在下面發佈答案,並且您可以接受針對您問題的「正確」答案。 – MrFlick 2015-02-24 21:57:08