顺序错误(x,...,na.last = na.last,减少=减少):参数1不是向量?

时间:2014-04-13 22:27:07

标签: r data.table lag zoo

我有巨大的data.frame,其示例如下所示:

df <- read.table(header=TRUE, text="
id    BSheetyearlag  sd
1001  Mar-1997       0.50
1001  Mar-1997       0.40
1001  Mar-1997       0.30
1001  Mar-1997       0.20
1001  Mar-1997       0.10
1001  Mar-1998       0.20
1001  Mar-1998       0.30", stringsAsFactors=FALSE)

我希望将列sd延迟4天,然后运行以下代码:

df <- as.data.table(df)
df[, lag_sd := lag(as.zoo(sd), k=4, na.pad=T), by=c("id", "BSheetyearlag")]

运行良好。但是,当我想继续或查看data.frame的外观(使用例如head函数)时:

df <- as.data.frame(df)
head(df)

我收到以下错误:

  

order(x, ..., na.last = na.last, decreasing = decreasing)中的错误:     参数1不是矢量

有谁知道为什么会这样?

这是sessionInfo()输出:

> sessionInfo()
R version 3.0.3 (2014-03-06)
Platform: i386-w64-mingw32/i386 (32-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  
other attached packages:
[1] pROC_1.7.1       gdata_2.13.2     TTR_0.22-0                   xts_0.9-7       
[5] zoo_1.7-11       data.table_1.9.2 nleqslv_2.1.1    plyr_1.8.1      

loaded via a namespace (and not attached):
[1] grid_3.0.3      gtools_3.3.1    lattice_0.20-27 Rcpp_0.11.1    
[5] reshape2_1.2.2  stringr_0.6.2 

1 个答案:

答案 0 :(得分:0)

df是 data.table ,而不是data.frame。

解决方法:您并不严格需要head(),您可以随时回退手动获取前10行(或N行):

df[1:10,]

我不知道data.table是否与head()有问题,但如果有,请查找data.table::print.data.table方法或类似方法。这些是在对象上调用普通print()时调度的特定于对象的方法。

请注意,事情会有所不同,例如格式,是否尊重/忽略options('digits'), options('scipen')等。对于dplyr tbl_df上的head()也是如此。