我在一个用逗号分隔的单个字母的文件上使用'fill = T':
Pred
1 T,T
2 NA
3 D
4 NA
5 NA
6 T
7 P,B
8 NA
9 NA
使用命令:
sift <- read.table("/home/pred.txt", header=F, fill=TRUE, sep=',', stringsAsFactors=F)
我希望筛选结果如下:
V1 V2
1 T T
2 <NA>
3 D
4 <NA>
5 <NA>
6 T
7 P B
8 <NA>
9 <NA>
然而,它出现了:
V1
1 T
2 <NA>
3 D
4 <NA>
5 <NA>
6 T
7 P
8 <NA>
9 <NA>
当每行中有多个sampleID(用逗号分隔)时,此代码有效 - 但不适用于单个字母。 “填充”是否适用于单个字母?愚蠢的问题,我知道。
答案 0 :(得分:2)
所以这是一个解决方法:
url <- "https://dl.dropboxusercontent.com/s/bjb241s16t63ev8/pred.txt?dl=1&token_hash=AAEBzfCGgoeHgNTvhMSVoZK6qRGrdwwuDZB3h8lWTZNtkA"
df.1 <- read.table(url,header=F,sep=",",fill=T,stringsAsFactors=F)
dim(df.1)
# [1] 149792 1 <-- 149,792 rows and ** 1 ** column
df.2 <- read.table(url,header=F,sep=",",fill=T,stringsAsFactors=F,
col.names=c("V1","V2"))
dim(df.2)
# [1] 149633 2 <-- 149,633 rows and ** 2 ** columns
head(df.2[which(nchar(df.2$V2)>0),])
# V1 V2
# 1000 T T
# 2419 T T
# 3507 T T
# 3766 T D
# 4308 T D
# 4545 T D
read.table(...)
创建一个数据框,其中列数由前5行确定。由于您文件中的前5行只有1列,所以您得到的是这些。显然,通过指定sep=","
,您强制read.table(...)
添加&#34;额外&#34;数据为额外行。
变通方法通过指定列名称(可以是任何内容)显式设置列数,只要length(col.names) = 2
。