gpt4 book ai didi

r - 关于错误 ":= and ` : =`(...) are defined for use in j, once only and in particular ways. See help(": =")"

转载 作者:行者123 更新时间:2023-12-04 10:10:39 24 4
gpt4 key购买 nike

我在 data.table 中遇到了奇怪的错误信息

我使用 := 修改了 data.table ,而且完全没问题,没有任何错误。
当我尝试将代码放入函数时,出现以下错误消息。

Error in `:=`(date, as.Date(as.character(date), "%Y%m%d") - 1) : 
:= and `:=`(...) are defined for use in j, once only and in particular ways. See help(":="). Check is.data.table(DT) is TRUE.

这是可重现的示例
testdat <- data.table(ID = c(1:10), date = c(20130101, 20130101, 20130101, 20130101, 20130101, 20130101, 20130101, 20130101, 20130101, 20130101), Number = rnorm(10))
# The single line command works fine.
testdat[, date := as.Date(as.character(date),"%Y%m%d") - 1][, Number:= NULL]
# But if I wrote them into a function, it failed.
# ( In this case, it worked as well.. So I got totally lost. )
test2 <- data.frame(ID = c(1:10), date = c(20130101, 20130101, 20130101, 20130101, 20130101, 20130101, 20130101, 20130101, 20130101, 20130101), Number = rnorm(10))
readdata <- function(fn){
DT <- data.table(fn)
DT[, date:= as.Date(as.character(date),"%Y%m%d") - 1][, Number:= NULL]
return(DT)
}

为了更好地描述,我将部分原始代码放在这里。所以你可能会明白哪里出了问题。
readdata <- function(fn){
DT <- fread(fn, sep=",")
# DT <- fread("1202.txt")
setnames(DT, paste0("V",c(1:12)), column_names)
# Modification on date
setkey(DT,uid)
DT[,date := as.Date(as.character(date),"%Y%m%d") - 1][, ignore:= NULL] #ignore is the name of one column
...}

我有一个 txt 文件列表,我想对每个文件进行计算。第一步是使用fread,然后一步一步进行。假设现在我想根据“1202.txt”文件进行计算。如果我从 DT <- fread("1202.txt") 开始然后继续。它不会出现这个错误。

如果我想使用 readdata("1202.txt")错误信息出来了。
最奇怪的是,我使用了 readdata之前没有任何错误。

那么这里发生了什么?有什么建议?谢谢。
> sessionInfo()
R version 3.0.2 (2013-09-25)
Platform: x86_64-w64-mingw32/x64 (64-bit)

locale:
[1] LC_COLLATE=English_United States.1252
[2] LC_CTYPE=English_United States.1252
[3] LC_MONETARY=English_United States.1252
[4] LC_NUMERIC=C
[5] LC_TIME=English_United States.1252

attached base packages:
[1] stats graphics grDevices utils datasets methods base

other attached packages:
[1] data.table_1.8.11

loaded via a namespace (and not attached):
[1] tools_3.0.2

编辑

经过一些试验,我发现如果我修改代码如下,它工作
   readdata <- function(fn){
DT <- fread(fn, sep=",")
DT <- data.table(DT) ## Just add this line compared to the original one.
# DT <- fread("1202.txt")
setnames(DT, paste0("V",c(1:12)), column_names)
# Modification on date
setkey(DT,uid)
DT[,date := as.Date(as.character(date),"%Y%m%d") - 1][, ignore:= NULL] #ignore is the name of one column
...}

所以错误是由于fread?在 fread 之后,它应该是一个 data.table。为什么我需要使用 data.table(DT) 来转换它?

编辑

谢谢关注。这是 2014 年 2 月 4 日的更新

我首先卸载了我的 1.8.11,然后按照 Matt 的说明进行操作。再次从CRAN安装1.8.10,然后按照他的代码一步一步来。结果完全没问题,没有任何错误。

然后我卸载了 1.8.11,然后尝试使用预编译的 zip 文件再次安装 1.8.11。

像往常一样,有一条警告消息:
> install.packages("~/Desktop/data.table_1.8.11.zip", repos = NULL)
Warning in install.packages :
package ~/Desktop/data.table_1.8.11.zip?is not available (for R version 3.0.2)
Installing package into C:/Users/James/R/win-library/3.0?(as lib?is unspecified)
package data.table?successfully unpacked and MD5 sums checked

> require(data.table)
Loading required package: data.table
data.table 1.8.11 For help type: help("data.table")

好像是警告信息不对,我装包的时候完全没问题。而此时,整个过程完全没问题。感谢马特和阿伦以及所有其他热心肠的人的耐心。我是data.table的初学者。真的很感激你的好意。

还有一件事,正如我在此 link 中已经报道的那样,至今未解。
> ?melt.data.table
No documentation for 憁elt.data.table?in specified packages and libraries:
you could try ??melt.data.table?

真的很可惜。有任何想法吗?

我在该链接中报告了我的 sessionInfo。我用的是 Win8.1 64bit

最佳答案

重新安装data.table v1.8.10/v1.8.11(两个版本我都试过)后,重新启动了一个新的R session 。问题解决了。

事实证明,我的问题是由安装了 5 个月大的开发版本引起的。
data.table主页有点误导:

Last recommended snapshot precompiled for Windows: v1.8.11 rev931 04 Sep 2013



[主页][1] 已改进,现在显示为:

install.packages("data.table",
repos="http://R-Forge.R-project.org")

Or, if that fails, the last precompiled .zip for Windows copied to this homepage may suffice: v1.8.11 rev1110 04 Feb 2014



感谢大家的宝贵回答和意见。

关于r - 关于错误 ":= and ` : =`(...) are defined for use in j, once only and in particular ways. See help(": =")",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21510539/

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