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

时间:2019-01-23 14:37:01

标签: r function dataframe

我想使用软件包“ igraph”从多个社区检测指标输出中创建一个数据框。但是,当我使函数执行此操作时,我仅获得返回的输出数据帧,原始数据帧未更改且仍然为空。我该如何实现?

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

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

我怎么能做到这一点?

1 个答案:

答案 0 :(得分:2)

当您调用函数时,您并未将结果分配给任何东西。尝试

df_com_det_1<-maker(df_com_det_1,label_propagation_unweighted)

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

有一种方法可以在函数中(使用<<-在全局环境中进行更改,但实际上不建议这样做。更好的解决方案是按照我上面的建议进行操作,只需将函数的结果分配回数据框中即可。