2016-09-04 3 views
1

У меня есть набор данных ped, который я хочу записать в отдельный файл с вкладкой. Однако заголовок должен начинаться с (#) знак хэш (в связи с требованиями программы, которые должны прочитать файл Как поставить решётку тамКак написать специальный символ в первой строке с write.table

ped <- ped [,c('FAM_ID','IND_ID','FAT_ID','MOT_ID','SEX','DISEASE','RR','AGE')] 
setwd(proj.dir) 
write.table(ped, "DB/asymmetry.ped", sep="\t", row.names = FALSE, quote = FALSE) 
+0

Отлично, что сработало. Я могу жить с этим предупреждением. Спасибо Большое! –

ответ

2

Вы можете попробовать:.?

cat("#", file = "DB/asymmetry.ped") 
write.table(ped, "DB/asymmetry.ped", sep="\t", row.names = FALSE, quote = FALSE, 
      append = TRUE) 

Обратите внимание, вы получите предупреждающее сообщение от write.table, как это поведение по умолчанию:.

## somewhere inside `write.table`: 
if (!is.null(col.names)) { 
     if (append) 
      warning("appending column names to file") 

, но это не вызывает никакого вреда


Другой возможный способ, чтобы добавить в "#" к вашему имени столбца, а затем использовать write.table как обычно (с quote = FALSE):

ped <- ped [,c('FAM_ID','IND_ID','FAT_ID','MOT_ID','SEX','DISEASE','RR','AGE')] 
NAMES <- names(ped) 
NAMES[1] <- paste0("#", NAMES[1]) 
setwd(proj.dir) 
write.table(ped, "DB/asymmetry.ped", sep="\t", row.names = FALSE, quote = FALSE, 
      col.names = NAMES) 

Я рекомендовал бы этот путь. Давайте тест:

x <- trees[1:3, ] ## use built-in dataset `trees` 
NAMES <- names(x) 
NAMES[1] <- paste0("#", NAMES[1]) 
## write to screen (stdout) for inspection 
write.table(x, row.names = FALSE, col.names = NAMES, quote = FALSE) 

#Girth Height Volume 
8.3 70 10.3 
8.6 65 10.3 
8.8 63 10.2 

В случае, если вы хотите добавить # в начале каждой строки/строки, вы можете добавить в "#" столбец в качестве первого столбца:

ped <- cbind.data.frame("#" = "#", ped[,c('FAM_ID','IND_ID','FAT_ID','MOT_ID','SEX','DISEASE','RR','AGE')]) 
setwd(proj.dir) 
write.table(ped, "DB/asymmetry.ped", sep="\t", row.names = FALSE, quote = FALSE) 

Опять же, давайте проверим:

x <- cbind.data.frame("#" = "#", trees[1:3, ]) 
## write to screen (stdout) for inspection 
write.table(x, row.names = FALSE, quote = FALSE) 

# Girth Height Volume 
# 8.3 70 10.3 
# 8.6 65 10.3 
# 8.8 63 10.2 
Смежные вопросы