[英]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.