Вектор символов Rbind должен быть первой строкой в таблице данных r

#r #datatable #rbind

Вопрос:

Мне нужно назначить вектор символов, который будет находиться в первой строке в базе данных R. Но пока все мои попытки сводятся к тому, чтобы оказаться на последнем месте. Когда я попытался указать номер строки, он выдает предупреждения о количестве столбцов. Это единственное, что работает, но до последней строки.

 Character_vector <- colnames(DT)

DT_NEW <- rbind(DT,as.list(Character_vector, ))
DT_NEW
 

Ответ №1:

Используйте другой порядок аргументов внутри rbind и правильный способ построения строки с именами столбцов:

 library(datatable)

DT = data.table(a=c("a1","a2","a3"),
            b=c("b1","b2","b3"),
            c=c("c1","c2","c3"))
Character_vector = colnames(DT)

result = rbind(setnames(do.call(data.table,
                                as.list(Character_vector)),
                        Character_vector),
               DT)
 

чтобы получить такой кадр:

 > result
    a  b  c
1:  a  b  c
2: a1 b1 c1
3: a2 b2 c2
4: a3 b3 c3
 

Чтобы развернуть все, что происходит, — это rbind одна строка имен столбцов и исходный кадр DT в указанном порядке:

 single_row_with_col_names = do.call(data.table, as.list(Character_vector))
setnames(single_row_with_col_names, Character_vector)
result = rbind(single_row_with_col_names,
               DT)