楼主: wuhan0130
2443 2

[问答] R语言 membership如何导出CSV [推广有奖]

  • 9关注
  • 2粉丝

博士生

79%

还不是VIP/贵宾

-

威望
0
论坛币
5444 个
通用积分
0.7659
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
4270 点
帖子
56
精华
0
在线时间
657 小时
注册时间
2014-4-26
最后登录
2025-12-6

楼主
wuhan0130 发表于 2020-5-10 17:17:49 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
我想把membership里面的向量倒出来表格,哪位大神,帮我写一下代码,万分感谢!

V(gg)$label=V(gg)#这个地方没加$name 然后节点就没有出现变量名称,系统自动给我编了一个数字好像是
是这样的么?

igraph文档的communities部分,
有个函数membership()通常可以给出一个对应节点社团编号的vector,
之后直接导出或者转成dataframe都可以

这是之前一个大神告诉我的,我的代码是这样的:

  1. library(network)

  2. g<-network::as.network.matrix(lianhe2)

  3. library(igraph)

  4. m<- as.matrix(lianhe2)#输入矩阵转换为matrix

  5. gg <- graph.adjacency(adjmatrix=m, mode="undirected", weighted=TRUE, diag=FALSE)#生成无向图,权重设置TRUE

  6. system.time(ec <- edge.betweenness.community(gg)) print(modularity(ec))V(gg)$size=4V(gg)$label=V(gg)#这个地方没加$name 然后节点就没有出现变量名称,系统自动给我编了一个数字好像是V(gg)$label.cex=0.4V(gg)$label.dist=0.7V(gg)$label.color="black"gg$layout<-layout.fruchterman.reingoldplot(ec, gg)#到这里就有那个图了membership(ec)#到这里就有下面那个表了a<-membership(ec)class(a)> write.csv(a,file = "C://Users//lanxin//Desktop//test//community2000-2004.csv")#到这里就不好了Error in as.data.frame.default(x[[i]], optional = TRUE) :   cannot coerce class ‘"membership"’ to a data.frame> write.table(a, file="", append=FALSE, quote=TRUE, sep=" ", row.names=TRUE, col.names=TRUE)#这个还是不行Error in as.data.frame.default(x[[i]], optional = TRUE) :   cannot coerce class ‘"membership"’ to a data.frame
复制代码


微信图片_20200510170917.png

微信图片_20200510170534.png
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝


沙发
drunkfish69 发表于 2020-5-10 20:53:38
  1. a<-membership(ec)class(a) %>%
  2.   write.csv(a,file = "C://Users//lanxin//Desktop//test//community2000-2004.csv")
复制代码

是不是管道符号用错了?
已有 1 人评分论坛币 收起 理由
cheetahfly + 10 热心帮助其他会员

总评分: 论坛币 + 10   查看全部评分

藤椅
wuhan0130 发表于 2020-5-12 07:34:57
昨天问的一个大神 给大家分享下:

这不是一个igraph的问题,是R语言数据操作的问题,
membership输出的结果类型是一个(named)vector,
但是class设置成了membership,
可以用as.vector()转换成普通的vector格式,
如果节点有name属性可以用names()获得对应节点名字
具体到你这个数据,如果想要一个带名字的
  1. data.frame(nodename=names(ec),nodecommunity=as.vetor(ec))
复制代码
或者也可以从ec对象里去对应结果,ec就是个list,
其中membership结果用ec$membership,
对应name可以用ec$names,
这些属性从rstudio之类ide里很容易看到。
所以上面也可以写成
  1. data.frame(nodename=ec$names,nodecomminity=ec$membership)
复制代码
已有 1 人评分论坛币 收起 理由
cheetahfly + 10 观点有启发

总评分: 论坛币 + 10   查看全部评分

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-2-8 03:21