R语言初学笔记2
一些简单的操作,数据是第一篇的数据,主要是对于一些刻画中心点的名词进行一些应用,点度中心度,接近中心度,中间中心度,最后提出了主要应用的地方
library(igraph)
data<- read.table("G:/facebook_combined/test.txt",header = FALSE,sep=" ")#默认false,不把第一行作为列名称处理,如果为TRUE则把数据文件第一行作为列名称处理
g<- graph.data.frame(data,directed = FALSE)
g_data<- as_data_frame(g,what = c("both")) #显示所有元素
labels <- union(unique(data[,1]),unique(data[,2]))
labels
ids<- 1:length(labels) #ids的长度从1 到labels的长度
names(ids)<- labels #设置labels与id的映射关系
E(g)$weight<- data[,3] #给每条边赋予权重
g<- simplify(g,remove.multiple = T,remove.loops = T,edge.attr.comb = "mean") #这里面还有一个属性是计算权值的方式
V(g)$labels <- labels #将labels的值赋予,不然无法用[-which(V(g)$labels=="c")]
V(g)$labels
length(V(g)) #得到样本的长度
V(g)[1:2] #读取前两个样本点的内容
get.shortest.paths(g,from = V(g)[label=="a"],to = V(g)[label=="c"])
shortest.paths(g) #点之间的最短距离,这里使用权值相加得到最小来确定
shortest.paths(g,v =V(g)[labels=="c"],to=V(g)[labels=="f"])
shortest.paths(g,v =V(g)[labels=="a"])
degree(g,v=V(g),mode = "total",normalized = T) #归一化每个顶点的度
degree(graph = g ,v=V(g)[labels=="a"],mode = "total",normalized = T)
pa<- shortest.paths(graph = g,v=V(g)[labels=="c"])[-which(V(g)$labels=="c")] #计算节点C的接近中心度
pa
pa<- ifelse(pa==Inf,length(V(g)),pa)#将距离为无限大的数据替换为点总数length(V(g))
1/sum(pa) #求和的倒数
closeness(graph = g,vids = which(V(g)$labels=="c")) #与上面的功能是一样的是求接近中心度,计算节点C的接近中心度
g<- g-V(g)[c(which(V(g)$labels=="f"),which(V(g)$labels=="g"))]
plot(g)
betweenness(g,v=V(g)[which(V(g)$labels=="c")]) #计算C的中间中心度
pa<- shortest.paths(graph = g,v=V(g)[which(V(g)$labels=="b")],to=V(g)[which(V(g)$labels=="a")]) #b到a的最短路径
shortest_paths(graph = g,from=V(g)[which(V(g)$labels=="b")],to=V(g)[which(V(g)$labels=="a")]) #显示路径
#点度中心度 描述的是行动者的局部中心指数。如果某点的中心度较高,则信息被该点传播后可以到达更多的点 研究信息交流活动
#接近中心度 考虑的是行动者在多大程度上与其他行动者相互影响。如果某店的中心度较高,则改点所出发的信息可以更快地传播到整个网络中 研究信息传递的有效性和独立性
#中间中心度 研究一个行动者在多大程度上居于其他两个行动者之间,因而是一种“控制能力”指数。如果某点的中心度较高 ,则信息的传播大多要经过该点才能完成 研究对信息交流的控制
如果错误,请指出,必定第一时间改,谢谢大家。