make_empty_graph(n = 0,directed =directed) 中的错误:VECTOR_ELT() 只能应用于“列表”,而不是“闭包”

问题描述

作为本学期研究的一部分,我将添加到以前学生已经建立的网络上,但我遇到了以前从未遇到过的错误。这段代码不是我写的,我只是在前进的过程中稍微修改了一下。

所以我有一个包含 85953 个数据帧的列表 daily_networks_df,每个数据帧看起来像这样:

enter image description here

以及此处生成网络不同部分(家庭、工作和其他)的函数代码

generate_el <- function(net_df){
    networki = net_df[,1]
    if(length(networki)>1){
    # add edge in all possible pairs with prob_interact[i]
        prob_interact=1/sqrt(length(networki))
        ppl_pairs = combn(networki,2)
        tmp1 = rbinom(ncol(ppl_pairs),1,prob_interact)
        el_tmp = t(ppl_pairs[,tmp1==1])
        return(el_tmp)
    }
}

上面的这个函数针对 3 种不同的网络类型做了一些修改,但其他 2 种非常相似,所以我没有包括在内。这是函数调用

# DEMAND NETWORK
work_start = 2
list_el1 = lapply(daily_networks_df[1:work_start],generate_el)
gr_el1 = do.call('rbind',list_el1)

# WORK NETWORK
prob_interact = .4
list_el2 = lapply(daily_networks_df[(work_start+1):homes_start],generate_el_work)
gr_el2 = do.call('rbind',list_el2)

# HOME NETWORK
prob_interact = .8
list_el3 = lapply(daily_networks_df[(homes_start+1):length(daily_networks_df)],generate_el_homes)
gr_el3 = do.call('rbind',list_el3)

# FULL NETWORK
gr_el=rbind(gr_el1,gr_el2,gr_el3)
gr = graph_from_data_frame(gr_el,directed=FALSE,vertices=total_pop)

当我尝试执行但不知道为什么时出现此错误。有什么帮助吗?

> gr = graph_from_data_frame(gr_el,vertices=total_pop)

Error in make_empty_graph(n = 0,directed = directed) : 
  VECTOR_ELT() can only be applied to a 'list',not a 'closure'

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)