【问题标题】:Error in order(x, ..., na.last = na.last, decreasing = decreasing) :argument 1 is not a vector?顺序错误(x,...,na.last = na.last,减少 = 减少):参数 1 不是向量?
【发布时间】:2014-04-13 22:27:07
【问题描述】:

我有一个巨大的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 

【问题讨论】:

  • 亲爱的 Arun,我已将其添加为已编辑
  • df 是一个 data.table,而不是一个 data.frame。也许你必须做head(as.data.table(df))?对此进行试验并查找特定于 data.table 的问题。另外,你应该标记这个data.table
  • 但在使用 head 函数之前,我正在更改 df,从数据表到数据框。感谢您的评论,我现在将对其进行编辑。
  • 需要可重复的示例...使用dput() 导出df 的小sn-p,或者使用runif/rnorm() 为我们创建一个虚拟示例。

标签: r data.table lag zoo


【解决方案1】:

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() 也是如此。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-09-06
    • 2015-10-18
    • 1970-01-01
    • 2017-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-04
    相关资源
    最近更新 更多