data.table抛出"object not found"错误。
data.table抛出"object not found"错误。
我有一个data.table:
library(data.table) mydt <- data.table(index = 1:10)
我在全局环境中尝试时它能正常工作,但在调试器中或在包测试中使用时却无法正常工作。问题是我无法以标准的方式对其进行子集操作。
Browse[2]> mydt[,index] Error in `[.data.frame`(x, i, j) : object 'index' not found Browse[2]> mydt[,list(index)] Error in `[.data.frame`(x, i, j) : object 'index' not found
这里有一个可重复的示例,在此示例中我创建了一个包,并在评估名为myfunction
的函数时出现错误:
library(devtools) setwd(tempdir()) # make dummy package called foo create("foo") setwd("foo") # add data.table as a package dependency a <- readLines("DESCRIPTION") depends.idx <- grepl("Depends", a) a[depends.idx] <- paste0(a[depends.idx], ", data.table") writeLines(a, "DESCRIPTION") # create a dummy function writeLines("myfunction <- function() {a <- data.table(b=1); return(a[,b])}", "R/foo.R") # check and throw error check() library(foo) myfunction()
这里是会话信息:
Browse[2]> sessionInfo() R version 3.0.2 (2013-09-25) Platform: x86_64-pc-linux-gnu (64-bit) locale: [1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C LC_TIME=C LC_COLLATE=C LC_MONETARY=C [6] LC_MESSAGES=C LC_PAPER=C LC_NAME=C LC_ADDRESS=C LC_TELEPHONE=C [11] LC_MEASUREMENT=C LC_IDENTIFICATION=C attached base packages: [1] stats graphics grDevices utils datasets methods base other attached packages: [1] PEcAn.data.atmosphere_1.3.3 data.table_1.9.2 RPostgreSQL_0.4 PEcAn.settings_1.3.3 [5] lubridate_1.3.3 PEcAn.DB_1.3.3 DBI_0.2-7 PEcAn.utils_1.3.3 [9] udunits2_0.6 ncdf4_1.12 randtoolbox_1.14 rngWELL_0.10-2 [13] ggplot2_1.0.0 XML_3.98-1.1 plyr_1.8.1 abind_1.4-0 [17] testthat_0.8.1 devtools_1.5.0.99 loaded via a namespace (and not attached): [1] MASS_7.3-29 RCurl_1.95-4.1 Rcpp_0.11.2 colorspace_1.2-4 digest_0.6.4 evaluate_0.5.5 grid_3.0.2 [8] gtable_0.1.2 httr_0.3 memoise_0.2.1 munsell_0.4.2 parallel_3.0.2 proto_0.3-10 reshape2_1.4 [15] roxygen2_4.0.1 scales_0.2.4 stringr_0.6.2 tools_3.0.2 whisker_0.3-2
在使用R语言的data.table包时,可能会遇到"object not found"的错误。该错误的原因是在创建一个名为foo的包的过程中,没有正确设置DESCRIPTION文件中的作者和维护者字段,导致在加载foo包时出现错误。解决该问题的方法是在DESCRIPTION文件中正确设置作者和维护者字段。
下面是一个复现该问题的例子。首先,在R中运行以下代码:
library(devtools) setwd(tempdir()) create("foo") setwd("foo") a <- readLines("DESCRIPTION") depends.idx <- grepl("Depends", a) a[depends.idx] <- paste0(a[depends.idx], ", data.table") writeLines(a, "DESCRIPTION") writeLines("myfunction <- function() {a <- data.table(b=1); return(a[,b])}", "R/foo.R") check() library(foo) myfunction()
运行以上代码后,会出现"object not found"的错误。错误的具体信息是在加载foo包时,DESCRIPTION文件中的作者和维护者字段没有正确设置。这个错误可以通过在DESCRIPTION文件中添加正确的作者和维护者字段来解决。
以上代码中,我们创建了一个名为foo的包,并在DESCRIPTION文件中添加了data.table作为依赖项。然后,我们在R/foo.R文件中添加了一个名为myfunction的函数,该函数使用data.table包来创建一个数据表并返回一个列。最后,我们使用check()函数来检查并构建foo包,并使用library(foo)来加载foo包,然后调用myfunction()函数。
然而,由于没有正确设置DESCRIPTION文件中的作者和维护者字段,导致加载foo包时出现错误。为了解决这个问题,我们需要在DESCRIPTION文件中添加正确的作者和维护者字段。具体来说,我们需要在DESCRIPTION文件中添加如下内容:
Authors: Your Name
Maintainer: Your Name
将"Your Name"替换为你的名字,将"your.email@example.com"替换为你的邮箱地址。
添加了正确的作者和维护者字段后,重新运行以上代码,就不会再出现"object not found"的错误了。
,当使用R语言的data.table包时,如果出现"object not found"的错误,可能是因为在创建包时没有正确设置DESCRIPTION文件中的作者和维护者字段。要解决这个问题,需要在DESCRIPTION文件中添加正确的作者和维护者字段。