繁体   English   中英

如何使用R中的函数将行添加到数据框

[英]How do i add rows to a dataframe with a function in R

我想使用“ igraph”包从多个社区检测指标输出中创建一个数据框。 但是,当我使函数执行此操作时,我仅获得返回的输出数据帧,原始数据帧未更改且仍然为空。 我怎样才能做到这一点?

首先,我制作了一个空数据框,其中包含3列,1个字符列和两个数字列。 我想将每种算法的结果附加到此数据框。 我使用dplyr通过自制的“ maker”功能进行了尝试。

df_com_det_1 <- data.frame(algorithm=character(),groups=numeric(0)
                          ,mod=numeric(0),stringsAsFactors=FALSE)

maker <- function(dataframe, methodused){
  dataframe %>%
    summarise(algorithm = methodused$algorithm,
              groups = length(unique(methodused$membership)),
              mod = methodused$modularity) %>%
    bind_rows(dataframe, .)
}

maker(df_com_det_1, label_propagation_unweighted)

我希望在控制台中看不到任何输出,但是我确实希望看到更改后的df_com_det_1数据帧,其中添加了以下行(现在仅在控制台中返回):

> maker(df_com_det_1, label_propagation_unweighted)
          algorithm groups       mod
1 label propagation      3 0.4534836

我怎样才能做到这一点?

调用函数时,不会将结果分配给任何东西。 尝试

df_com_det_1<-maker(df_com_det_1,label_propagation_unweighted)

当使用数据框调用函数时,将在该函数内部的新环境中创建该数据框的副本,并且对该数据框所做的所有更改都不会反映在外部环境中。

有一种方法可以在一个函数内(使用<<- )在全局环境中进行更改,但实际上并不建议这样做。 更好的解决方案是执行我上面建议的操作,然后将函数的结果简单地分配回数据框中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM