gpt4 book ai didi

r - data.table 函数在脚本中有效,但在包中无效

转载 作者:行者123 更新时间:2023-12-02 00:49:27 24 4
gpt4 key购买 nike

我有一个函数可以从 data.table 中删除空列,并将其包含在一个包中。

不知怎的,当我加载函数时它起作用,但当我从包中调用它时它不起作用。问题:为什么当我从包中调用该函数时它不运行?

包中的任何函数中都没有 require(data.table) 或library(data.table)。描述文件包含: 导入:data.table。所以Using data.table package inside my own package很满意。

library(data.table)
df = data.table(a = c(1,2,3), b = c(NA, NA, NA), c = c(4,5,6))
library(cr360)

remove.emptycols(df) # from package
Error in .subset(x, j) : invalid subscript type 'list'

# now open function from mypackage and run again:
# source("./mypackage/R/fun_remove_emptycols.R")
remove.emptycols(df)
a c
1: 1 4
2: 2 5
3: 3 6

功能:

#' Remove empty columns
#'
#' Counts the number of NA values in the columns and counts the number of rows.
#' @param df
#' @return df data.table with empty columns removed.
#' @export
#'
#'
remove.emptycols = function(df) {

count.colNA = df[,lapply(.SD, function(x) sum(is.na(x)))]
df = df[,which(count.colNA != nrow(df)),with = FALSE]

return(df)
}

最佳答案

正文

导入(data.table)

需要位于 NAMESPACE 文件中以及 data.table 位于描述字段的 Imports: 字段中。我已经编辑了链接的问题并更新了常见问题解答 6.9。
Using data.table package inside my own package

此外,在 RStudio 中请注意“使用 Roxygen 构建 NAMESPACE 文件”选项并查看:
Does roxygen2 automatically write NAMESPACE directives for "Imports:" packages?

<小时/>

以前的红鲱鱼为后代保留......

不确定,但您的包裹的描述包含:

...
Version: 1.0
Date: 2014-06-23
Imports:
data.table
Author: Henk
Description: utility functions
...

尝试删除换行符,然后改为:

...
Version: 1.0
Date: 2014-06-23
Imports: data.table
Author: Henk
Description: utility functions
...

关于r - data.table 函数在脚本中有效,但在包中无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24380350/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com