2017-09-06 379 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