簡體   English   中英

R:在不使用2d索引語法的情況下獲取矩陣行

[英]R: Get a matrix row without using 2d index syntax

我有一個矩陣,如下所示:

> train.y.class[1:2,]
     Class_1 Class_2 Class_3 Class_4 Class_5 Class_6 Class_7 Class_8 Class_9
[1,]       1       0       0       0       0       0       0       0       0
[2,]       0       0       0       0       1       0       0       0       0

然后將其傳遞到R函數tune ,該函數將對可能的模型參數執行網格搜索。 為了做到這一點,它定期對這些數據進行切片並將其傳遞給模型。 這些切片開始分解。 它做類似的事情

do.call(model, x, y[1:n], ...)

...而y[1:n]返回n個元素的向量,而不是所需的nx 9矩陣。 也就是說,我需要的東西看起來像上面的矩陣,但是我卻得到了這樣的東西:

> train.y.class[1:2]
[1] 1 0

既然不能訪問此程序庫代碼我的問題是,是否有可能我的矩陣重新格式化為一個結構,使形式的切片y.new[1:n]導致相同y.old[1:n,] ,即nx 9矩陣。 如果您願意,可以巧妙地破解。

如果答案是否定的,您可以提出替代解決方案嗎? 我已經嘗試過使用替代數據表示形式(不是矩陣)和模型包裝器的組合,但是我還沒有完全掌握重新格式化參數的技巧,然后再調用包裝的函數。

y[1:n, ]將返回nx 9矩陣。

當使用一維參數對矩陣進行子集化時,只需按列優先順序獲得矩陣的元素:

> (mat <- matrix(letters[1:20], ncol = 5)) # example matrix
    [,1] [,2] [,3] [,4] [,5]
[1,] "a"  "e"  "i"  "m"  "q" 
[2,] "b"  "f"  "j"  "n"  "r" 
[3,] "c"  "g"  "k"  "o"  "s" 
[4,] "d"  "h"  "l"  "p"  "t" 

> mat[1:6] # returns vector of length six
[1] "a" "b" "c" "d" "e" "f"

> mat[2:3, ] # returns 2 x 6 matrix
    [,1] [,2] [,3] [,4] [,5]
[1,] "b"  "f"  "j"  "n"  "r" 
[2,] "c"  "g"  "k"  "o"  "s" 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM