R dplyr解析条件过滤器中的变量
R dplyr resolve variable in conditional filter
我正在尝试根据变量值进行过滤,并且尝试了 filter_、点和引号的多种组合都无济于事。
举个例子,我有一个
runlist = c(1, 2, 3, 4, 5)
和一个数据框 boo
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
解析为正确的索引?
我的回答与 "resolving a variable in a conditional filter" 无关,但有一种更简单的方法可以做您想做的事。
主要的想法是根据变量 run
拆分数据框,并将一个函数映射到每个部分。此函数获取一段数据框并吐出一个 igraph。
以下代码完成上述操作,将图表列表存储在列 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))
我正在尝试根据变量值进行过滤,并且尝试了 filter_、点和引号的多种组合都无济于事。
举个例子,我有一个
runlist = c(1, 2, 3, 4, 5)
和一个数据框 boo
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
解析为正确的索引?
我的回答与 "resolving a variable in a conditional filter" 无关,但有一种更简单的方法可以做您想做的事。
主要的想法是根据变量 run
拆分数据框,并将一个函数映射到每个部分。此函数获取一段数据框并吐出一个 igraph。
以下代码完成上述操作,将图表列表存储在列 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))