Я теряю имена строк данных. Это происходит, когда функция rbind используется в таблице данных.
Вот пример, показывающий, что должно произойти
library(data.table)
allData <- NULL
for (itest in seq(3)) {
pts <- NULL
npts <- 4
for (ipt in seq(npts)) {
pp <- c(ipt, ipt*2, ipt^3)
pts <- rbind(pts,pp)
}
colnames(pts)<-c('A','B','C')
rownames(pts) <- paste('test',itest,seq(npts),sep='_')
# pts<-data.table(pts)
print(pts)
allData <- rbind(allData,pts)
}
print(allData)
Выход
A B C
test_1_1 1 2 1
test_1_2 2 4 8
test_1_3 3 6 27
test_1_4 4 8 64
test_2_1 1 2 1
test_2_2 2 4 8
test_2_3 3 6 27
test_2_4 4 8 64
testlibrary(data.table)
allData <- NULL
for (itest in seq(3)) {
pts <- NULL
npts <- 4
for (ipt in seq(npts)) {
pp <- c(ipt, ipt*2, ipt^3)
pts <- rbind(pts,pp)
}
colnames(pts)<-c('A','B','C')
pts<-data.table(pts)
rownames(pts) <- paste('test',itest,seq(npts),sep='_')
allData <- rbind(allData,pts)
}
print(allData)
1 1 2 1
testlibrary(data.table)
allData <- NULL
for (itest in seq(3)) {
pts <- NULL
npts <- 4
for (ipt in seq(npts)) {
pp <- c(ipt, ipt*2, ipt^3)
pts <- rbind(pts,pp)
}
colnames(pts)<-c('A','B','C')
pts<-data.table(pts)
rownames(pts) <- paste('test',itest,seq(npts),sep='_')
allData <- rbind(allData,pts)
}
print(allData)
2 2 4 8
testlibrary(data.table)
allData <- NULL
for (itest in seq(3)) {
pts <- NULL
npts <- 4
for (ipt in seq(npts)) {
pp <- c(ipt, ipt*2, ipt^3)
pts <- rbind(pts,pp)
}
colnames(pts)<-c('A','B','C')
pts<-data.table(pts)
rownames(pts) <- paste('test',itest,seq(npts),sep='_')
allData <- rbind(allData,pts)
}
print(allData)
3 3 6 27
testlibrary(data.table)
allData <- NULL
for (itest in seq(3)) {
pts <- NULL
npts <- 4
for (ipt in seq(npts)) {
pp <- c(ipt, ipt*2, ipt^3)
pts <- rbind(pts,pp)
}
colnames(pts)<-c('A','B','C')
pts<-data.table(pts)
rownames(pts) <- paste('test',itest,seq(npts),sep='_')
allData <- rbind(allData,pts)
}
print(allData)
4 4 8 64
При использовании таблицы данных имена строк теряются
library(data.table)
allData <- NULL
for (itest in seq(3)) {
pts <- NULL
npts <- 4
for (ipt in seq(npts)) {
pp <- c(ipt, ipt*2, ipt^3)
pts <- rbind(pts,pp)
}
colnames(pts)<-c('A','B','C')
pts<-data.table(pts)
rownames(pts) <- paste('test',itest,seq(npts),sep='_')
allData <- rbind(allData,pts)
}
print(allData)
Вывод с таблицей данных
A B C
1: 1 2 1
2: 2 4 8
3: 3 6 27
4: 4 8 64
5: 1 2 1
6: 2 4 8
7: 3 6 27
8: 4 8 64
9: 1 2 1
10: 2 4 8
11: 3 6 27
12: 4 8 64
Как следует изменить код, чтобы сохранить имена строк?
data.table
объект не имеетrow.names
периода. Если вы хотите сохранить их, воспользуйтесь предложением, упомянутым в комментариях. См. этот вопрос - person David Arenburg   schedule 02.01.2015