[英]How to write a special character in first line with write.table
我有一個數據集ped
,我想將其寫入制表符分隔的文件中。 但是,標頭需要以井號( #
)開頭(由於程序要求讀取文件的人。如何將井號放在其中?
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)
您可以嘗試:
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.