首页 > 解决方案 > R dplyr 在函数中发生变异

问题描述

这应该是一个非常直接的代码,我只是想将新变量绑定到现有数据帧。但是, dplyr mutate 似乎在函数中不起作用。当我调用函数 addLocation 时,不会添加项目。

位置数据 (df.russia_locations)

 location    lon         lat
 Kalingrad  20.45221    54.71043        
  Moscow    37.61730    55.75583    

绑定到 itemTest(可以是任何数据集)

     addLocation <- function(itemInfo){ itemInfo <- mutate(itemInfo,
                                     Kalingrad_lon = df.russia_locations[1,2],
                                     Kalingrad_lat = df.russia_locations[1,3],
                                     Moscow_lon = df.russia_locations[2,2],
                                     Moscow_lat = df.russia_locations[2,3]
                                    )}
     addLocation(itemTest)

我肯定错过了什么?

标签: rtidyrdplyr

解决方案


您需要return(itemInfo)在函数中的最后一个括号之前添加或删除函数中的itemInfo <-分配。如果将函数的输出分配给名称,则会得到预期的打印输出。

> itemTest2 <- addLocation(itemTest)
> length(addLocation(itemTest))
[1] 5
> length(addLocation(itemTest))==length(itemTest)
[1] FALSE

推荐阅读