Я сталкивался с таким поведением в RODBC (используя драйвер SQL Server):
df1 = data.frame(matrix(c(1:20), nrow=10))
df1
, который выводит
X1 X2
1 1 11
2 2 12
3 3 13
4 4 14
5 5 15
6 6 16
7 7 17
8 8 18
9 9 19
10 10 20
, что имеет смысл.Затем я сохраняю таблицу, используя RODBC
sqlSave(conout, df1, 'TEST')
Затем я переключаю два созданных столбца:
df2 = df1[,c(2,1)]
df2
, который выводит
X2 X1
1 11 1
2 12 2
3 13 3
4 14 4
5 15 5
6 16 6
7 17 7
8 18 8
9 19 9
10 20 10
, что также имеет смысл.
Видя эти две таблицы, я вижу, что X1 содержит только 1:10, а X2 содержит только 11:20.Теперь, когда я делаю
sqlSave(conout, df2, 'TEST', append=TRUE, fast=FALSE)
sqlQuery(conout, 'SELECT * FROM TEST')
rownames X1 X2
1 1 1 11
2 2 2 12
3 3 3 13
4 4 4 14
5 5 5 15
6 6 6 16
7 7 7 17
8 8 8 18
9 9 9 19
10 10 10 20
11 1 11 1
12 2 12 2
13 3 13 3
14 4 14 4
15 5 15 5
16 6 16 6
17 7 17 7
18 8 18 8
19 9 19 9
20 10 20 10
, это определенно не то, что я сохранил.Теперь три вопроса:
- Как это возможно?
- Где это поведение объясняется в руководстве по RODBC?
- Как я могу предотвратить поведение, не переупорядочивая мои столбцы(реальный случай за этим примером имеет> 300 столбцов).