小编Gab*_*rdi的帖子

igraph创建加权邻接矩阵

我正在尝试使用该igraph包来绘制(稀疏)加权图.我目前有一个邻接矩阵,但无法获得graph.adjacency识别边权重的功能.

考虑以下随机对称矩阵:

m <- read.table(row.names=1, header=TRUE, text=
"           A          B          C          D           E         F
A 0.00000000  0.0000000  0.0000000  0.0000000  0.05119703 1.3431599
B 0.00000000  0.0000000 -0.6088082  0.4016954  0.00000000 0.6132168
C 0.00000000 -0.6088082  0.0000000  0.0000000 -0.63295415 0.0000000
D 0.00000000  0.4016954  0.0000000  0.0000000 -0.29831267 0.0000000
E 0.05119703  0.0000000 -0.6329541 -0.2983127  0.00000000 0.1562458
F 1.34315990  0.6132168  0.0000000  0.0000000  0.15624584 0.0000000")
m <- as.matrix(m)
Run Code Online (Sandbox Code Playgroud)

为了绘图,首先我必须将这个邻接矩阵变为正确的igraph格式.这应该是相对简单的graph.adjacency.根据我阅读的文档graph.adjacency,我应该做以下事情:

library(igraph)
ig <- graph.adjacency(m, mode="undirected", weighted=TRUE)
Run Code Online (Sandbox Code Playgroud)

但是,它无法识别边缘权重:

str(ig)
# IGRAPH …
Run Code Online (Sandbox Code Playgroud)

r igraph

17
推荐指数
3
解决办法
3万
查看次数

magrittr中%>%和%,%之间有什么区别?

Github开发版的magrittr包含了一些很酷的新功能,但是我并没有完全理解%>%和之间的区别%,%.这只是%>%价值和%,%功能的正式,还是有一些特殊的特点?

r piping magrittr

14
推荐指数
1
解决办法
627
查看次数

R中的加权采样

我有一个数据框data.在每一行都i分配了一个重量data$ww.现在,我想提出一个样品new_datadata,按加权df$ww.我试过subset但很慢.

# sample data
data <- data.frame(var1 = log(sample(1:5000)))
ndata <- nrow(data)
maxW <- max(data$var1)

nsample <- 4000
rr <- runif(ndata)
data$ww <- cumsum(exp(data$var1))
new_data <- data[0, ]
i <- 1
while(nrow(new_data) < nsample) {
  new_data[i, ] <- subset(data, data$ww > rr[i] * maxW)[1,]
  i <- i + 1
}
Run Code Online (Sandbox Code Playgroud)

有更快的方法吗?

r

11
推荐指数
1
解决办法
9644
查看次数

浮点运算和再现性

IEEE-754算法在不同平台上是否可重现?

我正在测试一些用R编写的代码,它使用随机数.我认为在所有测试平台上设置随机数生成器的种子会使测试可重现,但这似乎不适用于rexp()生成指数分布的随机数.

这是我在32位Linux上得到的:

options(digits=22) ; set.seed(9) ; rexp(1, 5)
# [1] 0.2806184054728815824298
sessionInfo()
# R version 3.0.2 (2013-09-25)
# Platform: i686-pc-linux-gnu (32-bit)
Run Code Online (Sandbox Code Playgroud)

这就是我在64位OSX 10.9上得到的:

options(digits=22) ; set.seed(9) ; rexp(1, 5)
# [1] 0.2806184054728815269186
sessionInfo()
# R version 3.0.2 (2013-09-25)
# Platform: x86_64-apple-darwin10.8.0 (64-bit)
Run Code Online (Sandbox Code Playgroud)

64位Linux提供与64位OSX相同的结果,因此这似乎是32位与64位问题.

让我们假设两个R版本都使用相同的GCC版本编译,并使用相同的(默认R)编译标志,使编译器使用IEEE-754算法.

我的问题是,这可以被视为R中的一个错误吗?或者它只是使用近似有限精度浮点运算的"正常"结果?

我把相同的问题发送到R-devel邮件列表,但是没有在列表中找到答案,只有一个答案是私下的,试图说服我这不是一个错误,我应该忍受它.

这就是IEEE-754关于再现性的说法(来自维基百科):

IEEE 754-1985允许实现中的许多变化(例如某些值的编码和某些异常的检测).IEEE 754-2008已经收紧了其中许多,但仍然存在一些变化(特别是对于二进制格式).可再现性条款建议语言标准应提供编写可重现程序的方法(即,在语言的所有实现中产生相同结果的程序),并描述需要采取哪些措施才能获得可重现的结果.

这是在"建议"下.

我(主观)意见认为这是一个错误,因为IEEE-754标准的重点是具有可重现的,与平台无关的浮点运算.

floating-point r ieee-754

9
推荐指数
1
解决办法
1315
查看次数

如何使用igraph或tnet在R中创建二分网络

我有一个双模网络的边缘列表,类似于:

person  Event
Amy     football_game
Sam     picnic
Bob     art_show
Run Code Online (Sandbox Code Playgroud)

我想在R中对此进行分析,但看起来我尝试的一切都失败了.将其转换为单模式网络会遇到内存限制,我无法弄清楚如何在igraph或tnet中将其分析为二分.

在igraph中,bipartite.projection给我所有FALSE,在使用的igraph对象上

net <- graph.edgelist(myobject)
Run Code Online (Sandbox Code Playgroud)

在tnet上,我无法将igraph网转换为tnet网,当我尝试使用原始数据框时,它会因图中的重复而拒绝.

因此,以下任何一个的答案将非常感激:

  1. 我该如何使用该bipartite.mapping功能?
  2. 如何将igraph对象输入tnet?
  3. 如果所有其他方法都失败了,我该如何输入带有重复边的数据框到tnet?

很抱歉,如果这些是基本问题,但文档很少.

编辑

例:

edgelist <- read.table(text="Person    Event
                             Amy       football
                             Bob       picnic
                             Sam       artshow", 
                       header=TRUE)
edgelist <- as.matrix(edgelist)

## Igraph Issues
igraph <- graph.edgelist(edgelist)
typevector <- bipartite.projection(igraph) 
# gets all FALSE

edgelist2 <- get.edgelist(igraph)
typevector <- bipartite.projection(edgelist2) 
# same thing

## tnet issues
tnet <- as.tnet(edgelist) 
# gives error: "There are duplicate events in the edgelist" …
Run Code Online (Sandbox Code Playgroud)

r igraph sna

6
推荐指数
1
解决办法
1万
查看次数

在C/C++中的"igraph"中创建加权无向图

问题:我想.csv使用igraph 从存储在文件中的邻接矩阵制作加权无向图,然后对其进行最小生成树和其他算法.

我开始制作一个有10个顶点和5个边的有向图.默认情况下,igraph不允许边缘权重,你必须使用一些对我来说没有意义的属性(类似于igraph_i_set_attribute_table).

有人可以帮我解决这个问题.

void print_vector(igraph_vector_t *v, FILE *f) {
  long int i;
  for (i=0; i<igraph_vector_size(v); i++) {
    fprintf(f, " %li", (long int) VECTOR(*v)[i]);
  }
  fprintf(f, "\n");
}

int main(int argc, char* argv[])
{
  igraph_t g;
  igraph_vector_t v;
  int ret;
  igraph_es_t es;

  /* Initialize the vector for edges */
  igraph_vector_init(&v,10);

  VECTOR(v)[0]=0;VECTOR(v)[1]=1;
  VECTOR(v)[2]=1;VECTOR(v)[3]=3;
  VECTOR(v)[4]=1;VECTOR(v)[5]=5;
  VECTOR(v)[6]=2;VECTOR(v)[7]=3;
  VECTOR(v)[8]=2;VECTOR(v)[9]=5;

  igraph_create(&g,&v,0,IGRAPH_DIRECTED);

  print_vector(&v,stdout);

  /* igraph_i_set_attribute_table(&igraph_cattribute_table); */

  igraph_vector_destroy(&v);
  igraph_destroy(&g);

  return 0;
}
Run Code Online (Sandbox Code Playgroud)

c graph igraph minimum-spanning-tree weighted

5
推荐指数
1
解决办法
1885
查看次数

rep_each在Rcpp糖

我几天前开始学习Rcpp包,我正在逐步学习如何使用这个包.我可以看到,对于R中的许多函数,已经编写了一个相应的函数,它在C++中通过Rcpp包非常相似,我想这就是所谓的"Rcpp Sugar".我试图在我的C++代码中使用类似于rep()函数(R)的东西,我发现在Rcpp中我们有一些叫做rep_each的东西:

然后我找到了http://dirk.eddelbuettel.com/code/rcpp/html/classRcpp_1_1sugar_1_1Rep__each.html

问题是在阅读本页后,我仍然不知道如何使用它.即使我不知道论点是什么.是否有文档提供不同Rcpp糖功能的示例?

非常感谢

r rcpp

5
推荐指数
1
解决办法
770
查看次数

使用Nginx和Etags对动态内容进行服务器端缓存

我有一个CouchDB DB,前面有一个Nginx反向代理.CouchDB的一些响应需要很长时间才能生成(是的,这是一个糟糕的选择,但现在需要坚持使用它),我想用Nginx缓存它们.(目前Nginx只执行SSL.)

CouchDB支持Etags,理想情况下我想要的是Nginx缓存Etags以及哑客户端.客户端不使用Etags,他们只会查询Nginx,后者使用缓存的Etag访问CouchDB,然后将缓存的响应或新的响应发送回客户端.

我基于文档的理解是Nginx目前无法做到这一点.我错过了什么吗?是否有支持此设置的替代方案?或者唯一的解决方案是手动使Nginx缓存无效?

caching couchdb nginx server-side

5
推荐指数
1
解决办法
1895
查看次数

读取二分图和单模投影

如何读取二部图?我尝试了以下代码,但是当我尝试制作 OMP 时,它说

Error in bipartite.projection(g, types = NULL) : 
  Not a bipartite graph, supply `types' argument
Run Code Online (Sandbox Code Playgroud)

这是代码:

edgelist = read.csv("g1.csv",header=FALSE,sep=",")
g  = graph.edgelist(as.matrix(edgelist),directed=FALSE)
proj <- bipartite.projection(g,types=NULL)
g2= proj[[1]]
myplot(g2)
Run Code Online (Sandbox Code Playgroud)

g1.csv 1,5 1,4 2,4 3,5

r igraph

2
推荐指数
1
解决办法
997
查看次数