似乎有\n
字符串隨機分散在整個列名稱中。如果我們看一下使用substr()
和gregexpr()
文件中的第5個左右發生\n
,結果看起來很奇怪:
library(readr) # useful pkg to read files
df <- read_file("http://m.uploadedit.com/ba3c/1429271380882.txt")
> substr(df, gregexpr("\n", df)[[1]][1]-10, gregexpr("\n", df)[[1]][1]+10)
[1] "1-024.Top \nAlleles\tCF"
> substr(df, gregexpr("\n", df)[[1]][2]-10, gregexpr("\n", df)[[1]][2]+10)
[1] "053.Theta\t\nCFF01-053."
> substr(df, gregexpr("\n", df)[[1]][3]-10, gregexpr("\n", df)[[1]][3]+10)
[1] "CFF01-072.\nTop Allele"
> substr(df, gregexpr("\n", df)[[1]][4]-10, gregexpr("\n", df)[[1]][4]+10)
[1] "CFF01-086.\nTheta\tCFF0"
> substr(df, gregexpr("\n", df)[[1]][5]-10, gregexpr("\n", df)[[1]][5]+10)
[1] "ype\tCFF01-\n303.Top Al"
所以,這個問題顯然不是兩個後續\t
,但隨機分佈的換行符。這顯然會導致read.table
解析器崩潰。但是:如果隨機分散的換行符是問題,那麼我們將它們全部刪除並將它們插入正確的位置。以下代碼將正確讀取發佈的示例數據。你可能會需要拿出更好的正則表達式爲ID_REF
變量自動與\n
ID字符串的情況下,ID字符串變化之前替換它多在示例數據:
library(readr)
df <- read_file("http://m.uploadedit.com/ba3c/1429271380882.txt")
df <- gsub("\n", "", df)
df <- gsub("abph1", "\nabph1", df)
df <- read_delim(df, delim = "\t")
你知道推進你應該有多少列? – A5C1D2H2I1M1N2O1R2T1
@AnandaMahto我將它添加到問題 – NoBackingDown