我有一個名為 AS(在 R 中)的矩陣,它收集滿足特定條件的陣列元素的索引。然而,這個矩陣 AS 在頂部由 dim1、dim2、... 標記,這使我無法在典型運算式中使用這些索引(參見下圖)。如何擺脫這些暗淡的標簽并將此索引集合轉換為常規可用矩陣?
這是我的暗標記矩陣的外觀:

如果我嘗試正常使用此處包含的索引,則會出現錯誤:

注意:這里的尺寸不正確,因為 RandPoints[1, ...] 應該接受“...”的 4 個引數 例如,如果我輸入 RandPoints[1,12,1,1,它運行良好, 1],但我更希望通過呼叫圖片中嘗試的 AS 的第一行來提供 [12,1,1,1]。
uj5u.com熱心網友回復:
我們可以使用colnames(my_matrix) <- NULL. 下面是一個例子:
# create a matrix
my_matrix<-matrix(1:30,ncol=3)
# assign names to your matrix
colnames(my_matrix)<-c("dim1", "dim2", "dim3")
# remove the column names
colnames(my_matrix) <- NULL
my_matrix
[,1] [,2] [,3]
[1,] 1 11 21
[2,] 2 12 22
[3,] 3 13 23
[4,] 4 14 24
[5,] 5 15 25
[6,] 6 16 26
[7,] 7 17 27
[8,] 8 18 28
[9,] 9 19 29
[10,] 10 20 30
uj5u.com熱心網友回復:
我們可能需要傳遞一個matrixof 索引來進行子集化。一種選擇是將matrix行轉換為listwithas.list然后cbind使其成為一行 5 列的矩陣。的1是連接在一起“AS”的第二列的4個元素,并轉換為list
RandPoints[do.call(cbind, as.list(c(1, AS[2,])))]
或者另一種選擇是cbind。請注意,對于matrix/data.frame,默認選項是drop = TRUE當只有一行/列將矩陣轉換為向量時。因此,將其更改為drop = FALSE和 cbind 為 1(以回傳 5 列矩陣)
RandPoints[cbind(1, AS[2,, drop = FALSE])]
資料
AS <- cbind(dim2 = c(3, 5), dim3 = c(1, 1), dim4 = c(1, 1), dim5 = c(1, 1))
RandPoints <- array(1:750, dim = c(5, 5, 5, 2, 3))
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/350439.html
上一篇:重構任意嵌套的串列
下一篇:替換R中的反斜杠
