我有巨大的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
答案 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()
也是如此。