我有一个简单的函数,它导入csv,过滤几个变量,并将它与已存在于全局环境中的data.frame合并。
#' Imports file and merges
#' @export
#'
funcTest <- function(x = NULL, m, Q){
# Imports file
df1 <- fread(x, header = TRUE, sep = ",", stringsAsFactors = TRUE,
integer64 = "numeric")
# Create Filter
df1 <- df1 %>%
select(ORIGIN, DEST, ORIGIN_CITY_MARKET_ID, DEST_CITY_MARKET_ID,
PASSENGERS, QUARTER) %>%
filter(PASSENGERS > 0, QUARTER == Q) %>%
select(ORIGIN, DEST, ORIGIN_CITY_MARKET_ID, DEST_CITY_MARKET_ID, PASSENGERS)
# Merges df1 with df2
df2 <- df2 %>%
select(ORIGIN, DEST, ORIGIN_CITY_MARKET_ID, DEST_CITY_MARKET_ID, PASSENGERS)
dfbind <- rbind(df2,df1)
dfbind <<- dfbind
}
注意:m是已存在的data.frame,Q是用于过滤的变量。
但是我遇到错误,说df1不存在。 如果我从.GlobalEnv运行该函数,一切都运行良好。如果它在我的包裹上,我就明白了。发生这种情况的原因是什么?
答案 0 :(得分:1)
似乎答案很简单,并且与代码本身无关。阅读上面的一些评论后,我意识到data.table和dplyr软件包都没有正确加载到命名空间中。 这带来了我之前看到的错误。
这是一个比我想象的更常见的错误,但通常会发生从未达到解决方案的情况。因此,对于那些有相同问题的人,我强烈建议在查看您正在使用的功能之前检查NAMESPACE文件。