R:函数不提供数据帧作为输出

时间:2018-06-25 10:57:33

标签: r function dataframe

要计算两个数据框的值之间的差异,我合并了数据框,然后执行了计算。首先,我逐步进行了此操作:

B2_1 <- merge(2_1G, G, by = "G", all = TRUE)
B2_1$result <- B2_1$freq.x - B2_1$freq.y
B2_1$percentage <- (B2_1$result/B2_1$freq.y)*100

这给出了我想要的输出,作为一个数据帧:

View(B2_1)

Gender  freq.x  freq.y  result  percentage
1       39600   39542   58      0.15
2       41652   41710   -58     -0.14

但是,我必须对许多数据帧执行此操作,因此我想更加简洁。所以,我写了这个函数:

B <- function(frame1, frame2, column, bframe){
 bframe <- merge(frame 1, frame2, by = column, all = TRUE)
 bframe$result <- bframe$freq.x - bframe$freq.y
 bframe$percentage <- (bframe$result/bframe$freq.y)*100
}

B(DT2_1, 2_1, "Gender", BDT_2_1) 

如果运行第一个代码,则将计算结果放入创建/所需的数据框中(请参见示例)。如果我运行该函数(和调用),则它什么都不做。我在做什么错了?

1 个答案:

答案 0 :(得分:2)

现在,您仅修改bframe的值,而未声明该函数应返回结果。添加return语句(函数应提供的结果)应该可以解决您的问题。

B <- function(frame1, frame2, column) {
   ....
   return(bframe)
}

bframe <- B(...)

有关如何在R中定义函数的其他信息,请参见here