我有以下数据框(rmse1):
> rmse1
matrix..
1 NA
sGARCH - norm 0.0004717566
eGARCH - norm 0.0004522429
apARCH - norm 0.0004640376
sGARCH - std 0.0004173882
eGARCH - std 0.0004546693
apARCH - std 0.0004132033
sGARCH - ged 0.0004359045
eGARCH - ged 0.0004483274
apARCH - ged 0.0004247326
或以dput格式:
> dput(rmse1)
structure(list(matrix.. = c(NA, 0.0004717565532856, 0.000452242891965358,
0.000464037577947331, 0.000417388230016878, 0.000454669306307564,
0.00041320327280016, 0.00043590445999408, 0.00044832739721304,
0.000424732596935747)), .Names = "matrix..", row.names = c("1",
"sGARCH - norm", "eGARCH - norm", "apARCH - norm", "sGARCH - std",
"eGARCH - std", "apARCH - std", "sGARCH - ged", "eGARCH - ged",
"apARCH - ged"), class = "data.frame")
第一行是不需要的行(其中rowname是1:)
所以要删除它我输入以下代码:
rmse1<-rmse1[-1,]
但是,这次我放弃了数据框的rownames:
> rmse1
[1] 0.0004717566 0.0004522429 0.0004640376 0.0004173882 0.0004546693 0.0004132033 0.0004359045 0.0004483274 0.0004247326
如何在不丢失rownames的情况下删除第一行。
我会很高兴得到任何帮助。非常感谢。
答案 0 :(得分:2)
它之所以这样做是因为drop
论证。
当您进行子集化时,该数组只有一个级别,[
的默认值为drop = TRUE
。为了抵消这种情况,我们需要指定drop = FALSE
:
rmse1[-1, , drop = FALSE]
matrix..
sGARCH - norm 0.0004717566
eGARCH - norm 0.0004522429
apARCH - norm 0.0004640376
sGARCH - std 0.0004173882
eGARCH - std 0.0004546693
apARCH - std 0.0004132033
sGARCH - ged 0.0004359045
eGARCH - ged 0.0004483274
apARCH - ged 0.0004247326
查看@hadley正在开发的strict
包可能会有所帮助。它的一个好处是,一旦加载,如果未指定drop
参数,它将抛出错误。