我試圖從一個向量創建這樣的矩陣來創建矢量的不同的值的矩陣:高效方式中的R
vec =c(1, 2, 3)
> A
[,1] [,2] [,3] [,4] [,5]
[1,] 1 1 0 0 0
[2,] 1 2 1 0 0
[3,] 1 3 2 1 0
,並且每個的長度和矢量vec
的值被改變的時間。我如何編寫一個函數來創建這個矩陣?
我試圖從一個向量創建這樣的矩陣來創建矢量的不同的值的矩陣:高效方式中的R
vec =c(1, 2, 3)
> A
[,1] [,2] [,3] [,4] [,5]
[1,] 1 1 0 0 0
[2,] 1 2 1 0 0
[3,] 1 3 2 1 0
,並且每個的長度和矢量vec
的值被改變的時間。我如何編寫一個函數來創建這個矩陣?
我有點失去了這個問題,但此行
vec <- 1:3
embed(c(rep(0,length(vec)),vec),length(vec)+1)
...產生你想要的結果的最後一部分:
[,1] [,2] [,3] [,4]
[1,] 1 0 0 0
[2,] 2 1 0 0
[3,] 3 2 1 0
然後您可以將其綁定到矢量的第一個數字。
cbind(vec[1],embed(c(rep(0,length(vec)),vec),length(vec)+1))
給...
[,1] [,2] [,3] [,4] [,5]
[1,] 1 1 0 0 0
[2,] 1 2 1 0 0
[3,] 1 3 2 1 0
謝謝。這就是我一直在尋找的方式。 –
我認爲這可能做到這一點:
vec =c(1, 2, 3)
my.matrix <- matrix(0, nrow=length(vec), ncol=(max(vec)+2))
my.matrix
for(i in 1:length(vec)) {
my.matrix[i,1] <- 1
z <- seq(vec[i], 1, -1)
my.matrix[i,2:(vec[i]+1)] <- z
}
my.matrix
我迷路了 - 什麼是3個值之間的初始向量(VEC)和成果矩陣(A)所需的關係?他們似乎在從第2列到第5列的下降滯後期,但第1列正在做什麼? – thelatemail
此問題已在CrossValidated和遷移[此處](http://stackoverflow.com/q/10851976/210673)轉發更多詳細信息。 – Aaron