好吧,我对R中的数据帧和xtses的不同行为感到困惑,我希望有人可以向我解释。
df = as.data.frame(x = c(1,2),row.names = c("2012-12-12","2012-12-13"))
xts = as.xts(x=c(1,2),order.by = as.POSIXct(c("2012-12-12","2012-12-13")))
我这里有两个不同的数据集。当你打印它们时,它们看起来几乎相似。当我想要xts的第一行时,xts[1,]
返回带有colnames和索引的行。但是当你执行df[1,]
时,它只返回一个向量。
有没有办法返回数据帧的第一行,完成rownames和colname?我知道我可以通过as.data.frame(as.xts(df)[1,])
来破解它,但是有更优雅的解决方案吗?
答案 0 :(得分:2)
这是一个非常特殊的情况,其中数据帧上的行的子集操作只有一个单元格。
在这种情况下,您需要指定drop = FALSE
,此处
df[1, , drop = FALSE]
我建议您在从头开始创建数据框时,使用data.frame()
函数代替as.data.frame()