2017-09-06 177 views
0

我正在努力將矩陣存儲爲R中的一個鍵值對使用哈希包編程,但我面臨一些問題讓我告訴你我的情況我有兩個矩陣說矩陣a和矩陣b,我要讓矩陣,關鍵和矩陣b的值矩陣,我嘗試使用下面的腳本,但它似乎並沒有很好地工作在矩陣中存儲矩陣R

a = 1 2 b = 5 6 
    3 4  7 8 

dict <- hash() 
.set(dict, a, b) 
print(dict) 

Actual Output 
`1` 
1 = 5 

`2` 
2 = 6 

`3` 
3 = 7 

`4` 
4 = 8 

But I expect the output to be as 

`1` 
1 2  5 6 
    = 
3 4  7 8 

如何我可以做到這一點,做哈希包支持這種操作或我應該使用任何其他包,任何幫助將不勝感激,謝謝你在一個dvance。

回答

0

顯然,包hash不支持這種操作。 (順便說一句,它是hash,小寫字母h,R區分大小寫。)
我對這個軟件包沒有經驗,但根據手冊,你可以做類似下面的事情。

library(hash) 

# Data 
a <- matrix(1:4, ncol = 2, byrow = TRUE) 
b <- matrix(5:8, ncol = 2, byrow = TRUE) 

h <- hash(1:2, list(a, b)) 
h 
<hash> containing 2 key-value pair(s). 
    1 : 1 3 2 4 
    2 : 5 7 6 8 

h[["1"]] 
    [,1] [,2] 
[1,] 1 2 
[2,] 3 4 

h$`1` 
    [,1] [,2] 
[1,] 1 2 
[2,] 3 4 

或者,更好的是,您可以命名輸出的組件。

h <- hash(letters[1:2], list(a, b)) 
h 
<hash> containing 2 key-value pair(s). 
    a : 1 3 2 4 
    b : 5 7 6 8 

h[["a"]] 
    [,1] [,2] 
[1,] 1 2 
[2,] 3 4 

h$a 
    [,1] [,2] 
[1,] 1 2 
[2,] 3 4 

存儲在h中的對象的類是矩陣,如預期的那樣。

class(h$a) 
[1] "matrix" 

需要注意的是,仍然按照說明書,你能避免使用功能.set,你應該使用功能hash代替。

0

你似乎是有意像

library(hash) 
a <- matrix(c(1,2,3,4),2,2,byrow = T) 
b <- matrix(c(5,6,7,8),2,2,byrow = T) 

a <- list(a) 
b <- list(b) 

dict <- hash() 
.set(dict, a, b) 
dict 

輸出是

c(1, 3, 2, 4) : 5, 7, 6, 8 


希望這有助於!

+0

@shivanesh如果它回答了您的查詢,您應該將其標記爲正確的答案,因爲如果將來遇到類似問題,它可以幫助其他人。謝謝! – Prem