要计算两个数据框的值之间的差异,我合并了数据框,然后执行了计算。首先,我逐步进行了此操作:
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)
如果运行第一个代码,则将计算结果放入创建/所需的数据框中(请参见示例)。如果我运行该函数(和调用),则它什么都不做。我在做什么错了?
答案 0 :(得分:2)
现在,您仅修改bframe
的值,而未声明该函数应返回结果。添加return
语句(函数应提供的结果)应该可以解决您的问题。
B <- function(frame1, frame2, column) {
....
return(bframe)
}
bframe <- B(...)
有关如何在R中定义函数的其他信息,请参见here