2017-05-05 133 views
0

我知道這是一個R函數,它允許你轉置任何矩陣,但想知道如何去轉置一個矩陣而不使用它(即,使自己的函數)如何轉置一個矩陣,而不使用r中的t()函數

我該如何將它寫成我自己的函數?

transpose <- function(M) 

M <- matrix(data, nrow=(), ncol=(), byrow = TRUE) 
output <- matrix(data, nrow=ncol, ncol=nrow, brow = FALSE) 

請注意我剛剛開始使用r所以請不要苛刻。

+3

你知道如何製作一般的功能嗎?先學習一個基本的功能,然後思考如何使用鉛筆和紙張轉置矩陣,然後嘗試將它寫入R,然後如果卡住了,請回到此處併發布您的嘗試。 – Brandin

+0

我的學生的一般建議是首先考慮算法以及如何實現它。開始編碼。當你陷入困境時,搜索互聯網,當你耗盡所有選項(可能在搜索後的幾天後),在stackoverflow上發佈一個問題。 –

+1

這樣做的一種方法是'轉置< - 函數(x)矩陣(x,ncol(x),nrow(x),byrow = TRUE)' – Miff

回答

4

轉置矩陣只是將其列轉換爲行。 這可以用下面的代碼來完成:

transpose <- function(M) sapply(1:nrow(M), function(i) M[i,]) 
-1

可能是最糟糕的主意,但至少給人的轉置矩陣是:

  • 建一個矩陣M2
  • Assing到M2[i,j]值的M[j,i]

代碼:

M2 <- M 
    for (i in 1:nrow(M2)){ 
     for (j in 1:ncol(M2)){ 
      M2[i,j] <- M[j,i] 
     } 
    } 
+0

這並不回答這個問題。它只是重申它。需要查看代碼。 –

+0

它不回答這個問題?我認爲遵循這些步驟的函數會根據輸入生成一個traspose矩陣。 – R18

+0

可能。但是,SO的全部要點是回答WITH CODE的問題。 –