首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Chord Diagram中将数据从frame/datatable转换为R中的矩阵?

如何在Chord Diagram中将数据从frame/datatable转换为R中的矩阵?
EN

Stack Overflow用户
提问于 2017-02-04 00:35:46
回答 1查看 369关注 0票数 0

这可能看起来相对简单,但在使用新的D3 chorddiag包时,我正在尝试将数据从数据帧转换为矩阵。在我使用circlize并依赖于使用数据帧功能之前。Chorddiag似乎只依赖于矩阵,所以我想知道如何在类型之间跳转。下面是示例:

代码语言:javascript
复制
library(circlize)
library(chorddiag)
from = c("A", "A", "A", "A", "B", "B", "C", "C", "D")
to = c("B", "C", "D", "J", "E", "F", "G", "H", "I")
value = c(5,8,2,5,5,6,7,8,11)
food = data.frame(from, to, value)
food
chordDiagram(food)


#now in chordiag how to transform into matrix like m?
m <- matrix(c(11975,  5871, 8916, 2868,
              1951, 10048, 2060, 6171,
              8010, 16145, 8090, 8045,
              1013,   990,  940, 6907),
            byrow = TRUE,
            nrow = 4, ncol = 4)
groupnames <- c("black", "blonde", "brown", "red")
row.names(m) <- groupnames
colnames(m) <- groupnames
chorddiag(m)

我如何改变食物以使其与m相似?我想可能像下面这样,但我不确定如何在其中添加名称。感谢你的帮助

代码语言:javascript
复制
   matrix(data = food$value, nrow = length(food$from), ncol = length(food$to), byrow = TRUE
       #,dimnames = 
       )
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-02-04 00:50:06

如您的示例:

代码语言:javascript
复制
> food_matrix <- matrix(data = food$value, nrow = length(food$from), ncol = length(food$to), byrow = TRUE)
> food_matrix
      [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9]
 [1,]    5    8    2    5    5    6    7    8   11
 [2,]    5    8    2    5    5    6    7    8   11
 [3,]    5    8    2    5    5    6    7    8   11
 [4,]    5    8    2    5    5    6    7    8   11
 [5,]    5    8    2    5    5    6    7    8   11
 [6,]    5    8    2    5    5    6    7    8   11
 [7,]    5    8    2    5    5    6    7    8   11
 [8,]    5    8    2    5    5    6    7    8   11
 [9,]    5    8    2    5    5    6    7    8   11

现在,我们使用rownames()colnames()来命名矩阵的行和列

代码语言:javascript
复制
> rownames(food_matrix) <- food$from
> colnames(food_matrix) <- food$to
> food_matrix
  B C D J E F G H  I
A 5 8 2 5 5 6 7 8 11
A 5 8 2 5 5 6 7 8 11
A 5 8 2 5 5 6 7 8 11
A 5 8 2 5 5 6 7 8 11
B 5 8 2 5 5 6 7 8 11
B 5 8 2 5 5 6 7 8 11
C 5 8 2 5 5 6 7 8 11
C 5 8 2 5 5 6 7 8 11
D 5 8 2 5 5 6 7 8 11`

这就是你要找的输出吗?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42028891

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档