问题是: 我在一些数据集上运行模拟和预测,基本上问题是当进行10k倍的交叉验证时,它会随机抽取10%的原始数据,但是当把结果放到一个完整的数据框中时,我会得到像合并它们时的额外1或2或..
我的例子很糟糕,所以我从其他帖子中借用它:rbind in R gives a weird rowname
> tt1[2,]
date close emp pred
2 1982-03-24 112.97 -1 1
> tt2[2,]
date close emp pred
2 1982-03-25 113.21 1 1
问题:
> rbind(tt1[2,],tt2[2,])
date close emp pred
2 1982-03-24 112.97 -1 1
21 1982-03-25 113.21 1 1
我想要的是什么:
> rbind(tt1[2,],tt2[2,])
date close emp pred
2 1982-03-24 112.97 -1 1
2 1982-03-25 113.21 1 1
任何帮助都会很棒,谢谢大家。
最佳, ķ
答案 0 :(得分:2)
此示例使用最初发布的数据:
data_1 <- structure(list(ID = 1:3, GPA = c(3, 3.5, 4)), .Names = c("ID",
"GPA"), class = "data.frame", row.names = c("1", "2", "3"))
data_2 <- structure(list(ID = 3:5, GPA = c(3.1, 3.2, 3.3)), .Names = c("ID",
"GPA"), class = "data.frame", row.names = c("3", "4", "5"))
(忽略ID
列与rowname一致的事实。)
您可以捕获原始行名称(如果需要,稍后再应用它们):
rbind(cbind(rn=rownames(data_1), data_1), cbind(rn=rownames(data_2), data_2))
## rn ID GPA
## 1 1 1 3.0
## 2 2 2 3.5
## 3 3 3 4.0
## 31 3 3 3.1
## 4 4 4 3.2
## 5 5 5 3.3
这可以通过几种方式参数化。这是一个:
d <- list(data_1, data_2)
do.call(rbind, lapply(d, function(x) cbind(rn=rownames(x), x)))
## rn ID GPA
## 1 1 1 3.0
## 2 2 2 3.5
## 3 3 3 4.0
## 31 3 3 3.1
## 4 4 4 3.2
## 5 5 5 3.3