2016-05-01 4 views
0

Как избежать ошибки invalid 'col.names' specification при использовании write.table на входе, которое содержит много символов \t? Пример кода:R write.table: недопустимые 'col.names' спецификация

> x <- c("1\t119\t120\t1\t119\t120\tABC\tDEF\t0", "2\t558\t559\t2\t558\t559\tGHI\tJKL\t0", "3\t139\t141\t3\t139\t141\tMNO\tPQR\t0", "3\t139\t143\t3\t139\t143\tSTU\tVWX\t0") 
> x 
[1] "1\t119\t120\t1\t119\t120\tABC\tDEF\t0" 
[2] "2\t558\t559\t2\t558\t559\tGHI\tJKL\t0" 
[3] "3\t139\t141\t3\t139\t141\tMNO\tPQR\t0" 
[4] "3\t139\t143\t3\t139\t143\tSTU\tVWX\t0" 

> write.table(x, file = "file.txt", row.names = FALSE, col.names = c("A", "B", "C", "D", "E", "F", "G", "H", "I")) 
Error in write.table(x, file = "uuu.txt", row.names = FALSE, col.names = c("A", : 
    invalid 'col.names' specification 

Следующая команда действительно производит таблицу вывода, но по-прежнему сохраняет двойные кавычки с обеих сторон:

> write.table(x, file = "uuu.txt", row.names = FALSE, col.names = FALSE) 

Выход:

"1 119 120 1 119 120 ABC DEF 0" 
"2 558 559 2 558 559 GHI JKL 0" 
"3 139 141 3 139 141 MNO PQR 0" 
"3 139 143 3 139 143 STU VWX 0" 

Вместо этого, я хотел бы см.:

A B C D E F G H I 
1 119 120 1 119 120 ABC DEF 0 
2 558 559 2 558 559 GHI JKL 0 
3 139 141 3 139 141 MNO PQR 0 
3 139 143 3 139 143 STU VWX 0 

I ' ve попробовал некоторые комбинации strsplit(x, split = "\t") для предварительной обработки ввода перед вызовом write.table, но столкнулся с той же ошибкой: invalid 'col.names' specification.

ответ

2

Вы не можете записывать данные в табличную форму, если они уже не в табличной форме. Читайте в x, а затем напишите его

write.table(read.table(text = x), 'file.txt', col.names = LETTERS[1:9], quote = FALSE) 
Смежные вопросы