精华内容
下载资源
问答
  • c语言程序判断关系R在集合A是否等价、相容、偏序

    千次阅读 多人点赞 2019-11-11 21:51:53
    这是我们离散老师布置的第二次程序作业,...判断关系R在集合A是否等价、相容、偏序,也就是判断关系R是否满足自反,对称,反对称,传递这些性质。 等价:自反,对称,传递 相容:自反,对称 偏序:自反,反对称,传...

    这是我们离散老师布置的第二次程序作业,有些写的不好的地方,需要改进的地方,希望大佬们指出来,希望大家多多包涵和支持,哈哈。

    输入的要求

    输入:集合A元素的个数,关系R的关系矩阵,
    输出:判断关系R在集合A是否等价、相容、偏序

    算法思想

    判断关系R在集合A是否等价、相容、偏序,也就是判断关系R是否满足自反,对称,反对称,传递这些性质。
    等价:自反,对称,传递
    相容:自反,对称
    偏序:自反,反对称,传递
    所以只要写四个函数判断关系R是否满足自反,对称,反对称,传递
    自反:关系矩阵的角对角线全为1
    对称:若<x,y>=1则<y,x>=1,写函数时,只要判读关系矩阵的上三角或下三角即可。判断<x,y>等于<y,x>即可,若出现<x,y>不等于<y,x>,则不符合对称。
    反对称:若<x,y>=1,则<y,x>=0,写函数时,也只要判读关系矩阵的上三角或下三角即可。判断<x,y>不等于<y,x>即可,若出现<x,y>等于<y,x>,则不符合对称。
    传递:需要遍历除对角线外的整个关系矩阵,列如,碰见关系矩阵位置的[i][j], 则应找到第j行,不为0的一一匹配,(例如第j行的[j][p]),则组成[i][p]若不等于1,则不符合传递的性质,若全部符合,则符合传递的性质。

    代码

    第一个头文件const.h

    #pragma once
    
    
    #define TRUE			 1
    #define FALSE			 0
    #define OK				 1
    #define ERROR			 1
    #define INFEASIBLE		-1
    #define OVERFLOW		-2
    
    
    typedef int Status;
    
    

    第二个文件Function.h

    #pragma once
    
    #include<cstdio>
    #include<iostream>
    
    #include"const.h"
    
    using namespace std;
    
    
    Status Reflexive(int arr[50][50],int num)//判断是否自反
    {
    	int i,flag=0;
    
    	for (i = 0; i < num; i++)
    	{
    		if (arr[i][i] == 1)
    		{
    			flag++;
    		}
    	}
    	if (flag == num)
    		return OK;
    	else
    		return FALSE;
    
    }
    
    Status Symmetry(int arr[50][50], int num)//判断是否对称
    {
    	int i, j;
    	int flag = 0;
    	for (i = 0; i < num-1; i++)
    	{
    		for (j = i+1; j < num; j++)
    		{
    			if (arr[i][j] != arr[j][i])
    				flag = 1;
    		}
    	}
    	if (flag == 0)
    		return OK;
    	else
    		return FALSE;
    }
    
    Status Asymmetry(int arr[50][50], int num)//判断是否为反对称
    {
    	int i, j;
    	int flag = 0;
    	for (i = 0; i < num - 1; i++)
    	{
    		for (j = i + 1; j < num; j++)
    		{
    			if (arr[i][j]==1 && arr[j][i]==1)
    				flag = 1;
    		}
    	}
    	if (flag == 0)
    		return OK;
    	else
    		return FALSE;
    }
    
    Status Transitive(int arr[50][50], int num)//判断是否传递
    {
    	int i, j;
    	int p1;
    	int flag = 0;
    
    	for (i = 0; i < num; i++)
    	{
    		for (j = 0; j < num; j++)
    		{
    			if (i != j)
    			{
    				if (arr[i][j] == 1)
    				{
    					for (p1 = 0; p1 < num; p1++)
    					{
    						if (arr[j][p1] == 1)
    						{
    							if (arr[i][p1] != 1)
    								flag = 1;
    						}
    					}
    				}
    			}
    		}
    	}
    	if (flag == 0)
    		return OK;
    	else
    		return FALSE;
    
    }
    
    

    源文件Collection_Relationship.cpp

    #include"Function.h"
    
    //1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1
    int main()
    {
    	int a[50];//用来存放集合A;
    	int arr[50][50];//用来存放关系矩阵
    	int i, j,num;//num存集合元素个数
    
    	cout << "请输入集合A的个数:";
    	//printf("请输入集合A的个数:");
    	//scanf("%d", &num);
    	cin >> num;
    
    	//printf("请输入集合A的所有元素\n");
    	cout << "请输入集合A的所有元素"<<endl;
    	for (i = 0; i < num; i++)
    		//scanf("%d", &a[i]);
    		cin >> a[i];
    
    	//printf("请输入关系矩阵(按行序输入)\n");
    	cout << "请输入关系矩阵R(按行序输入)" << endl;
    	for (i = 0; i < num; i++) {
    		for (j = 0; j < num; j++) {
    			//scanf("%d", &arr[i][j]);
    			 cin >> arr[i][j];
    		}
    	}
    
    
    	int mark1=0, mark2=0, mark3 = 0,mark4=0;
    
    	mark1 = Reflexive(arr, num);
    	mark2 = Symmetry(arr, num);
    	mark3 = Asymmetry(arr, num);
    	mark4 = Transitive(arr, num);
    
    	if (mark1 == 1 && mark2 == 1&& mark4 == 1)
    		cout << "关系R在A上是等价的" << endl;
    	else
    		cout << "关系R在A上不是等价的" << endl;
    	if (mark1 == 1 && mark2 == 1)
    		cout << "关系R在A上是相容的" << endl;
    	else
    		cout << "关系R在A上不是是相容的" << endl;
    	if (mark1 == 1 && mark3 == 1 && mark4 == 1)
    		cout << "关系R是A的一个偏序关系" << endl;
    	else
    		cout << "关系R不是A的一个偏序关系" << endl;
    
    	cin.get();
    	cin.get();
    	return OK;
    }
    
    

    输出结果

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    展开全文
  • 笔者寄语:由于笔者参加了一个全国数据挖掘大赛的比赛,所选赛题是招聘岗位的数据挖掘,笔者用到了社会关系网络来进行相关职位的推荐以及分类,发现了SNA可以实现一定的职位画像的功能,于是根本停不下来的学习了SNA...



    每每以为攀得众山小,可、每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~

    ———————————————————————————



    笔者寄语:这里所有的应用代码都来自与igraph包。《R语言与网站分析》书中第九章关系网络分析把大致的框架已经描述得够清楚,但是还有一些细节需要完善,而且该书笔者没找到代码。。。


    ————————————————————————————————————————



    一、关系网络数据类型


    关系网络需要什么样子的数据呢?    笔者接触到了两种数据结构,擅自命名:平行关系型、文本型。根据数据关联,也有无向数据、有向数据。

    并且关系网络生成之后,R里面就不是用真实的名字来做连接,是采用编号的。例如(小明-小红)是好朋友,在R里面就显示为(1-2),所以需要单独把名字属性加到序号上。


    1、平行关系型


    (1)无向平行数据。直接上例子比较直观,社交网络中的好友关系,你-我,我-他。这样排列,是无向


    id1	di2
    小明	小红
    小张	小白
    小红	小胖
    小胖	小蓝
    小白	小明
    小白	小张
    小明	小胖

    很简单的两列数据,说明了小明-小红、小张-小白的社会关系。当然需要注意,重名问题,名字可能有重叠,可以给每个人一个编号,这样就不会出现重名。

    实战中,一般是拿编号作为输入变量,拿名字作为编号的标签,加入到关系网络中。

    (2)有向平行数据。举一个书(《R语言与网站分析》)上的例子。解读一下这个图,这是一条微博的转发情况,“老牛”用户这个微博号转发,让“晴”、“四眼看八方”两个用户看到了。

    “老牛”用户发出,“晴”、“四眼看八方”用户分别接收到。

    2、文本型

    文本型主要针对的是文本数据,笔者在参赛时就用到这个。文本型也有两种情况:有向型以及词条-文本矩阵。这部分内容跟文本挖掘相关,关于分词内容可以参考中文分词包Rwordseg。

    (1)有向型就如同平行关系型有向数据结构一样,人名-词条两个

    人名词条
    小明小气
    小张帅气
    小红好看
    小胖
    小白帅气
    小白阳光
    小明贪吃

    (2)词条-文本矩阵

    文本挖掘中,一般都能获得这个矩阵,可以看一下tm包的博客,文档-词频矩阵。tm包中用DocumentTermMatrix函数可以获得。

     小气帅气好看阳光贪吃
    小明1 0001
    小张010000
    小红001000
    小胖000100
    小白010010

    跟上面的对比一下就了解,变成了一个稀疏矩阵,相关的关联规则、随机森林中中也会用到这个矩阵。tm包可以实现,也可以通过reshape包中的cast函数,构造这个函数。

    需要原来的数据框调整为以每个词作为列名称(变量)的数据框。也就是一定意义上的稀疏矩阵(同关联规则),也就是将long型数据框转化为wide型数据框。转换可以用的包有reshape2以及data.table。

    其中,data.table里的`dcast`函数比reshape2包里的`dcast`好用,尽管他们的参数都一样,但是很多人还是比较喜欢老朋友reshape2包,然而这一步需要大量的内存,本书在服务器上完成的,如果你的电脑报告内存不足的错误,可以使用data.table包里的`dcast`函数试试。转化为稀疏矩阵,1表示访问,0表示未访问。

    ————————————————————————————————————————

    二、构造关系网络


    1、自编译函数init.igraph


    看到了数据类型,大概知道其实需要两样东西,一个起点数据列、一个终点数据列。那么构造数据就只需要调用一下函数,在这里选用《R语言与网站分析》书中第九章关系网络分析中,李明老师自己编译的函数来直接构造。

    在使用之前需要library调用igraph包,该函数的好处就是直接帮你打上点标签以及线标签。

    init.igraph<-function(data,dir=F,rem.multi=T){
      labels<-union(unique(data[,1]),unique(data[,2]))
      ids<-1:length(labels);names(ids)<-labels
      from<-as.character(data[,1]);to<-as.character(data[,2])
      edges<-matrix(c(ids[from],ids[to]),nc=2)
      g<-graph.empty(directed = dir)
      g<-add.vertices(g,length(labels))
      V(g)$label=labels
      g<-add.edges(g,t(edges))
      if (rem.multi){
        E(g)$weight<-count.multiple(g)
        g<-simplify(g,remove.multiple = TRUE,
                    remove.loops = TRUE,edge.attr.comb = "mean")
      }
      g
    }
    这个函数有这么几个参数:

    data,是两列关系数据,前面已经讲过了,只能两列,而且要同等长度;

    dir,逻辑值,T代表有向图,F无向图;

    rem.multi,逻辑,T删除重复变量并更新线权重weight,F不删除并且线权重为1。
    使用方法直接init.igraph(data,dir=T,rem.multi=T)即可。


    2、文本型数据


    一般数据结构都可以套用上面的函数,包括平行关系型的有向、无向;文本型。其中对于文本矩阵型数据还有一个办法,参考于统计词画番外篇(一):谁共我,醉明月?

    利用igragh包中的graph_from_adjacency_matrix函数。


    adjm <- matrix(sample(0:1, 100, replace=TRUE, prob=c(0.9,0.1)), nc=10)
    g1 <- graph_from_adjacency_matrix( adjm ,weighted=TRUE,mode="undirected")
    
       ## 给稀疏矩阵行列进行命名
    rownames(adjm) <- sample(letters, nrow(adjm))
    colnames(adjm) <- seq(ncol(adjm))
    g10 <- graph_from_adjacency_matrix(adjm, weighted=TRUE, add.rownames="row",add.colnames="col")


    代码解读:adjm是随便构造的一个矩阵,函数;

    graph_from_adjacency_matrix中,

    weighted=TRUE,是否需要加入权重;
    mode有directed, undirected, upper, lower, max, min, plus有这么几种,min代表把无向图中,只选取最小数字的线(1,1)与(1,2)只选择(1,1)。具体请参看函数官方解释。

    add.rownames以及add.colnames,因为前面的自编译函数init.igraph可以自定义标签,这里定义名称,可以用add.rownames加入标签列,这样你可以用V(g10)$row以及V(g10)$col直接看到标签。其中还可以自己定义名字,row,col都是笔者自己定义的。


    ————————————————————————————————————————



    三、一些基本操作


    关系网络中,每一个点的信息存放在V中,每一个线的信息存放在E中。并且通过自编译的init.igraph函数,V(g)$label以及E(g)$weight都是自带的属性。

    可以生成一个空的关系网络。

    并且关系网络生成之后,R里面就不是用真实的名字来做连接,是采用编号的。例如(小明-小红)是好朋友,在R里面就显示为(1-2),所以需要单独把名字属性加到序号上。


    g<-graph.empty(directed=F)

    1、关系网络中的点集V


    点集就是网络中所有的点,如有向文本型那个数据格式,包括了14个点;7条线。


    (1)点集属性


    点集与数据框的操作很相似,属性是可以自己赋上去的,比如V(g)$label就是赋上去的,你还可以给点集加上颜色(V(g)$color)、加上每个点的尺寸(V(g)$size),加上分类(V(g)$member)

    点集的选择跟数据框操作一样,比如我要选择群落为1的点集,就是V(g)[which(V(g)$member==1)]

    比如我要选择点度数大于1的点集,V(g)[degree(g)>1]

    如果我想知道一下这两个点之间是否有关系,可以用edge.connectivit函数,edge.connectivity(g, 4,9)  代表着第四个点与第九个点之间是否有连接关系。返回的0/1。0是没有线,1代表有线。


    (2)点集加减操作


    我想在原来的基础上加入一些点,用add.vertices

    g<-add.vertices(g,length(labels))#关系网络中加入“点”
    如果我想减去点度数为0的点
    g<-g-V(g)[degree(g)==0] 


    (3)相邻点的集合——neighbors(很重要)


    neighbors(g.zn,v=which(V(g.zn)$label=="会计"))
    V(g.zn)$label[neighbors(g.zn,v=which(V(g.zn)$label=="取向"),mode="total")]
       #默认mode设置是out,还有 in,total;其中V(g.zn)$label和V(g.zn)一个返回标签,一个返回值
    eighbors可以找出标签如果是“会计”的点,与之有关系的点的序号是啥;不过你也可以通过V(g.zn)$label让临近点的标签一起筛选出来

    其中mode代表点出度(out)以及点入度(in),还有两个都有的点度(total)。
    该函数可以对于点集,做附近的画像,比较好用。



    2、关系网络中的线集E


    (1)线集的类型


    关系网络中线的关系比较多,loop线就是循环到自己的点,1-2-1;multiple代表线的重叠。

    which_loop(g)  #线是否能够指回自己,1-1就是指回自己
    which_multiple(g)  #是否有重复线,后面1-1与前面1-1重复了


    (2)线集属性


    线的属性中,自编译函数能够拿到线权重,E(g)$weight。但是没有标签项,这时候需要用set_vertex_attr加入线标签。

    g<-set_vertex_attr(g,"name",value=V(g)$label)
    原理就是把点集的标签,打到线集上来,name是默认的设置。
    线集的属性中也可以跟数据集一样进行筛选操作。

    temp<-E(g)[order(E(g)$weight>25000)]


    (3)线集加减


    线集的加减可以用add.edges以及-来实现


    g<-add.edges(g,t(edges))  #edges需要先转置
    g<-g-E(g)[(weight>1)]  #删除部分线


    其中需要注意,add.edges中,需要把列数据,转置为行数据,平放id与词条。

    同时线集也会有重复性的问题,见下文count.multiple(g) 以及simplify函数。

    还有一些特别的函数,diameter(g)可以做到最长的链接经过了多少根线。


    4、关系网络的重复性问题


    在关系网络中,重复是常见的,而且无向线中1-2与2-1是重复的,重复线的数量也可以作为线的权重。也就是E(g)$weight。其中igrarh包中笔者看到两个函数跟重复性问题有关。count.multiple(g) 以及simplify函数。


    (1)count.multiple(g) 函数


    可以获得网络中线的重复情况。不重复是1,重复一次+1。比如:无向网络(1-2,2-3,2-1)就是(2,1,2)

    等价于E(g)$weight


    (2)simplify函数


    函数常规式:simplify(g,remove.multiple = TRUE,remove.loops = TRUE,edge.attr.comb = "mean")

    其中loops是指是否循环回自己,比如1-2-1就是一个循环到自己;multiple是指重复比如1-2,2-1。


    h <- graph( c(1,2,1,2,3,3,2,1,4,4) );h   
    is_simple(h)
    simplify(h, remove.loops=FALSE)   #线重复,删除a->b,a->b删掉
    simplify(h, remove.loops=TRUE)    #在线方向性重复基础上删掉点重复,a->a,b->b
    simplify(h, remove.multiple=FALSE)#删掉点重复
    simplify(h, remove.multiple=TRUE)#删掉点重复同时,删除线a->b,a->b
    simplify(h, remove.multiple=TRUE,remove.loops=TRUE) #删掉线重复、点重复


    simplify函数识别了两种重复方式,一种是线重复,比如1-2,2-1,;一种是点重复比如1-1,2-2就是点重复。

    remove.multiple=TRUE,把重复的线删除
    edge.attr.comb,使用重复次数来更新线权重E(g)$weight


    每每以为攀得众山小,可、每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~

    ———————————————————————————

    展开全文
  • E-R图转化为关系模型

    万次阅读 多人点赞 2019-06-11 22:29:48
    一个实体集转换为关系模型中的一个关系,实体的属性就是关系的属性,实体的码就是关系的码,关系的结构是关系模式。 关系关系模式等名词的解释 二、实体集间联系的转换规则 1、1:1联系的转换方法 方法...

    一、实体集的转换规则

    一个实体集转换为关系模型中的一个关系,实体的属性就是关系的属性,实体的码就是关系的码,关系的结构是关系模式。

     

    关系、关系模式等名词的解释

     

    二、实体集间联系的转换规则

    1、1:1联系的转换方法

     

    方法一:

    将1:1联系转换为一个独立的关系:与该联系相连的各实体的码以及联系本身的属性均转换为关系的属性,且每个实体的码均是该关系的候选码。

           联系形成的关系独立存在:    

           职工(职工号,姓名,年龄)

           产品(产品号,产品名,价格)   

           负责(职工号,产品号)

    方法二:

    将1:1联系与某一端实体集所对应的关系合并,则需要在被合并关系中增加属性,其新增的属性为联系本身的属性和与联系相关的另一个实体集的码。

          “负责”与“职工”两关系合并:

           职工(职工号,姓名,年龄,产品号)

           产品(产品号,产品名,价格)

     

           也可以“负责”与“产品”两关系合并:

           职工(职工号,姓名,年龄)

          产品(产品号,产品名,价格,职工号)

    三、1:n联系的转换方法

     

    方法一:

    一种方法是将联系转换为一个独立的关系,其关系的属性由与该联系相连的各实体集的码以及联系本身的属性组成,而该关系的码为n端实体集的码。

              联系形成的关系独立存在:

              仓库(仓库号,地点,面积)

              产品(产品号,产品名,价格)

              仓储(产品号,仓库号,数量)


           方法二:

    在n端实体集中增加新属性,新属性由联系对应的1端实体集的码和联系自身的属性构成,新增属性后原关系的码不变。

              仓库(仓库号,地点,面积)      

              产品(产品号,产品名,价格,仓库号,数量)

     

    四、m:n联系的转换方法

    一个m:n联系转换为一个关系。

     

    转换方法为:

    与该联系相连的各实体集的码以及联系本身的属性均转换为关系的属性,新关系的码为两个相连实体码的组合(该码为多属性构成的组合码)。

              转换的关系模型为:

              学生(学号,姓名,年龄,性别)

              课程(课程号,课程名,学时数)

              选修(学号,课程号,成绩)

    五、三个或三个以上实体集间的多元联系的转换方法

    (1)对于一对多的联系,转换为关系模型的方法是修改n端实体集对应的关系,即将与联系相关的其他1端实体集的码和联系自身的属性作为新属性加入到n端实体集中

     

    课程(课程号,课程名,学分,学时)

    教师(教师号,教师名,性别,职称,课程号)

    参考书(书号,书名,出版社,主编,课程号)

     

    (2)对于多对多的联系,转换为关系模型的方法是新建一个独立的关系,该关系的属性为多元联系相连的各实体的码以及联系本身的属性,码为各实体码的组合。

     

    供应商(供应商号,供应商名,地址)

    零件(零件号,零件名,单价)

    产品(产品号,产品名,型号)

    供应(供应商号,零件号,产品号,数量)

    展开全文
  • R语言的igraph画社交关系图示例

    千次阅读 2016-05-12 20:13:56
    R语言中的igraph可以很方便地画出社交关系图。下面是几个示例。 1.最简单的社交关系图 library(igraph) dolphin g jpeg(filename='dolphins.jpg',width=800,height=800,units='px') ...

    R语言中的igraph可以很方便地画出社交关系图。下面是几个示例。


    1.最简单的社交关系图


    library(igraph)

    dolphin <- read.csv('dolphins.csv',head=T,fileEncoding='UTF-8',stringsAsFactors=F)

    g <- graph.data.frame(dolphin)

    jpeg(filename='dolphins.jpg',width=800,height=800,units='px')

    plot(g,

    vertex.size=5,

    layout=layout.fruchterman.reingold,

    vertex.shape='circle',

    vertex.label.cex=1.0,

    vertex.label.color='black',

    edge.arrow.size=0) #连线的箭头的大小为0,即无箭头

    dev.off()


    画出的图,如下:



    2.关系图中某人或某几个人的关系图


    某个人(这里是海豚)的关系图(节点4):

    jpeg(filename='dolphins_sub.jpg',width=800,height=800,units='px')

    gn<-graph.neighborhood(g, order=1)

    plot(gn[[1]],

    layout=layout.fruchterman.reingold)

    dev.off()


    某个人的两层关系图(节点6):

    gn<-graph.neighborhood(g, order=2)

    plot(gn[[2]], layout=layout.fruchterman.reingold)

    dev.off()


    某两个人的关系图:

    jpeg(filename='dolphins_sub3.jpg',width=800,height=800,units='px')

    gn<-graph.neighborhood(g, order=1)

    plot(gn[[1]]+gn[[2]], layout=layout.fruchterman.reingold)

    dev.off()



    3.根据联系人的多少决定节点的大小和色彩,连线设成弧线


    source("http://michael.hahsler.net/SMU/ScientificCompR/code/map.R")

    E(g)$curved <- 0.2 #将连线设成弧线,数值越大弧线越弯

    jpeg(filename='dolphins_curve1.jpg',width=800,height=800,units='px')

    layout=layout.fruchterman.reingold

    plot(g, layout=layout, vertex.size=map(degree(g),c(1,20)), vertex.color=map(degree(g),c(1,20)))

    dev.off()



    4.给社交关系图划分社区,不同的社区用不同的颜色表示


    cl <- optimal.community(g)

    E(g)$curved <- 0

    jpeg(filename='dolphins_commu2.jpg',width=800,height=800,units='px')

    layout=layout.fruchterman.reingold

    plot(g, layout=layout, vertex.size=5, vertex.color= rainbow(10, .8, .8, alpha=.8)[cl$membership+1L],)

    dev.off()



    5.设定社区的数目


    sg1 <- cluster_spinglass(g, spins=3, gamma=1.0) #spins是社区的数目

    jpeg(filename='dolphins_commu9.jpg',width=800,height=800,units='px')

    layout=layout.fruchterman.reingold

    plot(g, layout=layout, vertex.size=5, vertex.color= rainbow(10, .8, .8, alpha=.8)[sg1$membership],)

    dev.off()



    6.画出某一社区


    画出示例5的社区中,membership为1的社区。

    sg1 <- cluster_spinglass(g, spins=3, gamma=1.0)

    jpeg(filename='dolphins_subcommu.jpg',width=800,height=800,units='px')

    layout=layout.fruchterman.reingold

    subg <- induced.subgraph(g, which(membership(sg1)==1))

    plot(subg, layout=layout, vertex.size=5, vertex.color= 1,)

    dev.off()



    7.不同布局方式下社区的显示


    以上的布局为layout=layout.fruchterman.reingold


    如果是其他布局,社区的显示会有变化。

    sg1 <- cluster_spinglass(g, spins=3, gamma=1.0)

    jpeg(filename='dolphins_commu10.jpg',width=800,height=800,units='px')

    layout=layout.circle

    plot(g, layout=layout, vertex.size=5, vertex.color= rainbow(10, .8, .8, alpha=.8)[sg1$membership],)

    dev.off()


    sg1 <- cluster_spinglass(g, spins=3, gamma=1.0)

    jpeg(filename='dolphins_commu11.jpg',width=800,height=800,units='px')

    layout=layout.sphere

    plot(g, layout=layout, vertex.size=5, vertex.color= rainbow(10, .8, .8, alpha=.8)[sg1$membership],)

    dev.off()


    以上的示例仅为抛砖引玉。


    有关igraph的demo可以看demo(package="igraph")。


    在R中键入demo(package="igraph"),它会给出子项目:

    centrality Classic and other vertex centrality indices

    cohesive Cohesive blocking, the Moody & White method

    community Community structure detection

    crashR A crash-course into R

    hrg Hierarchical random graphs

    smallworld Small-world networks

    然后键入子项目看demo。如demo(package="igraph", community),它会给出community的示例。

    展开全文
  • 我的数据是(一部分):这是相互之间的关系对ENSG00000082929 miR-193b ENSG00000082929 miR-150 ENSG00000082929 miR-96 ENSG00000082929 miR-205 ENSG00000082929 miR-375 ENSG00000082929 miR-145 ENSG...
  • C语言判断关系R是否为自反关系

    千次阅读 2020-03-19 21:58:19
    判断关系R是否为自反关系。键盘输入R的关系序偶,程序输出判断结果 #include <stdio.h> #include <stdlib.h> //输入关系 void input(char **a,int n) { int x,y; printf("输入关系,使用1~n之间的整数,...
  • 变量间的关系分析_R语言

    千次阅读 2018-10-14 16:27:47
    1 变量间的关系分析 1.1 变量间的关系 函数关系(确定性关系)数学模型 相关关系(非确定性关系)统计学 平行关系(相关关系) 一元相关分析 多元相关分析 依存关系(回归分析) 一元回归分析 多元回归分析 ...
  • 介绍关系运算和逻辑运算之前,先说下R的逻辑常量:TRUE和FALSE。 在R中,TRUE和FALSE分别表示逻辑常量真和假,其值分别为1和0。 &gt; TRUE + 0 [1] 1 &gt; FALSE + 0 [1] 0 其它语言中,TRUE和FALSE...
  • 格兰杰因果关系检验(原理及R语言应用实例)

    万次阅读 多人点赞 2010-05-14 13:00:00
    诺贝尔经济学奖获得者,计量经济学大师克莱夫·格兰杰(Clive Granger)从预测的角度给出了因果关系的一种描述性定义,这就是我们现在所熟知的Granger因果关系。格兰杰因果关系检验是计量经济方法中常用的一种检验...
  • R语言相关关系可视化函数梳理

    千次阅读 2018-05-14 00:00:00
    &#13; &#13; &#13; &#13; &#13; &#13; &#13; 点击蓝字关注这个神奇的公众号~作者:赵镇宁 R语言中文社区特约作者 当考察多个变量间的相关关系时,通...
  • 实体关系E-R:实体关系

    千次阅读 2019-10-23 20:08:58
    实体关系E-R:实体关系图 设计数据库的时候,需要使用E-R图来描述。实体关系E-R:实体关系图。 实体:可以理解成我们Java程序中的一个对象,E-R图中使用矩形...实体和实体之间的关系在E-R图中使用菱形表示。 ...
  • R语言-画社交关系

    2015-12-16 10:18:00
    使用了R语言的可视化包igraph library(igraph)#读取数据,注意编码格式是utf-8singer  read.csv('c:/data/tmp/singers-sub.csv', head=T,fileEncoding='UTF-8',stringsAsFactors=F)#加载数据框 g  graph.data....
  • 关系R的运算

    千次阅读 2017-11-22 23:24:55
    今天学习关系之后突然想写一个大程序实现判断二元关系的单根单值和是否等价等等,以后可能还会编一个关系运算的算法。C是两年前学的了,再看到vc的界面还是觉得真的是老的不行。。。把初稿和思路发上来。这个程序...
  • 使用R语言进行协整关系检验

    万次阅读 2014-10-29 15:20:15
    协整检验是为了检验非平稳序列的因果关系,协整检验是解决伪回归为问题的重要方法。首先回归伪回归例子: 伪回归Spurious regression 伪回归方程的拟合优度、显著性水平等指标都很好,但是其残差序列是一个非...
  • R——相关关系热图

    万次阅读 2019-07-26 22:25:39
    本文介绍了如何画两组变量(特征)的相关关系热图。 准备数据 两组变量的数据可以像下面这样处理,分别保存两个csv文件中。 > # 导入数据及数据预处理 > setwd("D:/weixin/") > rows <- read.csv(...
  • 例子1: library(plyr)set.seed(10) rm(list=ls()) library(igraph) g(n=10,p.or.m=1/3,directed=TRUE) com = walktrap.community(g, steps = 6) V(g)$sg = com$membership + 1 V(g)$color = rainbow
  • 关系T的元数 = r+s
  • 本文对R语言相关关系可视化的函数进行了初步梳理(全篇框架如下),后续大家可根据个人需求及函数功能择优选择。一、pairs {graphics}1. 参考(1)《现代统计图形》 5.17 散点图矩阵(2)《R数据可视化手册》 5.13...
  • E-R实体关系介绍

    千次阅读 2018-11-06 17:28:39
    E-R图也称实体-联系图(Entity Relationship Diagram),提供了表示实体类型、属性和联系的方法,用来描述现实世界的概念模型。 它是描述现实世界关系概念模型的有效方法。是表示概念关系模型的一种方式。用“矩形框...
  • E / R图中,关系是否具有属性? ER模型中,实体具有可以是各种类型的属性,如单值,多值,复合,简单,存储,派生和复杂。但是关系也可以具有与之相关的属性。通常,如果不需要,不建议为关系提供属性,因为...
  • R语言建立VAR模型分析联合内生变量的动态关系

    万次阅读 多人点赞 2017-09-05 13:40:38
    VAR模型分析联合内生变量的动态关系 一、实验介绍 1.1 实验内容 VAR模型是向量自回归模型的简称,是基于数据的...本实验运用 R 语言来建立两变量的向量自回归模型,首先是检验两变量序列的平稳性,然后进行协整检验
  • 以Sepal.Length和Sepal.Width为横纵坐标,分水平,以Petal.Width大小为颜色,探索数据之间的关系: library(lattice) levelplot(Petal .Width ~Sepal .Length *Sepal .Width , iris, cuts= 9 ,col .regions =...
  • 向量自回归模型估计的先决条件之一是被分析的时间序列是平稳的。...下文介绍了VECMs的基本概念,并在R中估计这种模型。 模型和数据 向量误差修正模型与VAR模型非常相似,可以有如下形式。 其..

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 824,418
精华内容 329,767
关键字:

在关系r