0

我正在尝试根据变量值进行过滤,并尝试了 filter_、点和引号的多种组合,但均无济于事。

例如,我有一个

runlist = c(1, 2, 3, 4, 5) 

和一个数据框嘘

run <- rep(seq(5), 3)
edge1 <- sample(20, 15)
edge2 <- sample(20, 15)
weights <- sample(50, 15)
boo <- as.data.frame(cbind(run, edge1, edge2, weights))

我想过滤一个名为 boo 的数据框,它可能看起来像迭代

for (i in runlist) {
    bop <- boo %>% filter( run == i )
    str(boo)
}

我怀疑我会听到关于不使用 for 循环和 R 的消息,而是使用group_by(run),但我将这些数据发送到igraph并且需要进一步将数据集子集化为边缘和权重,从而丢失分组变量,如

bop <- boo %>% filter( run == i ) %>% select( edge1, edge2, weights )

我将创建一个网络图并找到每次运行的密度和中心性值。

bing <- graph.data.frame(bop)

如何让i条件过滤器中的 解析为正确的索引?

4

1 回答 1

2

我的回答不是关于“在条件过滤器中解析变量”,而是有一种更简单的方法来做你想做的事情。

最大的想法是根据变量拆分数据框run,并将函数映射到每个部分。该函数获取一段数据帧并输出一个 igraph。

下面的代码完成了上述操作,在 column 中存储了一个图表列表graph。(这是一个列表列,请参阅R for data science book中的更多内容)

boo %>%
  group_by(run) %>%
  nest() %>%
  mutate(graph = map(data, function(x) graph.data.frame(x %>% select(edge1, edge2, weights)))) %>%
  mutate(density = map(graph, function(x) graph.density(x))
于 2017-05-17T23:07:44.420 回答