我有一个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
答案 0 :(得分:7)
重复性好的问题!这就是我得到的。你没有发布你的输出,所以也许你没有得到相同的输出。我已将输出拆分并将 HERE 置于问题所在的位置。
$ R
R version 3.1.0 (2014-04-10) -- "Spring Dance"
Copyright (C) 2014 The R Foundation for Statistical Computing
Platform: x86_64-pc-linux-gnu (64-bit)
> library(devtools)
> setwd(tempdir())
> # make dummy package called foo
> create("foo")
Creating package foo in .
No DESCRIPTION found. Creating with values:
Package: foo
Title:
Description:
Version: 0.1
Authors@R: # getOptions('devtools.desc.author')
Depends: R (>= 3.1.0)
License: # getOptions('devtools.desc.license')
LazyData: true
> 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()
Loading required package: roxygen2
Updating foo documentation
Loading foo
HERE :
Invalid DESCRIPTION:
Authors@R field gives no person with author role.
Authors@R field gives no person with maintainer role and email address.
See the information on DESCRIPTION files in section 'Creating R packages' of the 'Writing R Extensions' manual.
Loading required package: data.table
data.table 1.9.2 For help type: help("data.table")
Attaching package: ‘data.table’
The following object is masked from ‘package:bit’:
setattr
Updating collate directive in /tmp/Rtmp0h3yz9/foo/DESCRIPTION
Updating namespace directives
Writing foo.Rd
'/usr/lib/R/bin/R' --vanilla CMD build '/tmp/Rtmp0h3yz9/foo' --no-manual --no-resave-data
* checking for file '/tmp/Rtmp0h3yz9/foo/DESCRIPTION' ... OK
* preparing 'foo':
HERE :
* checking DESCRIPTION meta-information ... ERROR
Authors@R field gives no person with author role.
Authors@R field gives no person with maintainer role and email address.
See the information on DESCRIPTION files in section 'Creating R
packages' of the 'Writing R Extensions' manual.
Error: Command failed (1)
> library(foo)
> myfunction()
Error in `[.data.frame`(x, i, j) : object 'b' not found
>