如何在R中读取制表符分隔的文件?
我正在阅读一个选项卡分隔的文件,它是使用以下代码生成的矩阵如何在R中读取制表符分隔的文件?,r,file,matrix,R,File,Matrix,我正在阅读一个选项卡分隔的文件,它是使用以下代码生成的矩阵 infile <- file("line.txt", "r") readLines(infile) -> matrix 与: 其中“line.txt”是您为制表符分隔的文本文件指定的名称 使用fill=TRUE允许不完整的行,从?读取。表: 填充逻辑。如果为TRUE,则在行长度不相等的情况下, 将隐式添加空白字段 na.字符串要解释的字符串的字符向量 作为NA值。空白字段也被认为是中缺少的值 逻辑、整数、数字和复杂字段
infile <- file("line.txt", "r")
readLines(infile) -> matrix
与:
其中“line.txt”是您为制表符分隔的文本文件指定的名称
使用fill=TRUE
允许不完整的行,从?读取。表
:
填充逻辑。如果为TRUE,则在行长度不相等的情况下,
将隐式添加空白字段
na.字符串要解释的字符串的字符向量
作为NA值。空白字段也被认为是中缺少的值
逻辑、整数、数字和复杂字段
要使用示例输入,我只需执行以下操作,而不是使用file=“line.txt”
:
x <-
read.table(text='
position SNP rs11828013 rs7931369 rs567411332 rs184532784 rs7931583 rs555937772 rs9651750 rs9651751 rs9651752 rs73530502
71278426 rs11828013 rs11828013
71278461 rs7931369 - rs7931369
71278482 rs567411332 - - rs567411332
71278519 rs184532784 - - - rs184532784
71278580 rs7931583 - 1.000 - - rs7931583
71278733 rs555937772 - - - - - rs555937772
71278792 rs9651750 - 1.000 - - 1.000 - rs9651750
71278828 rs9651751 - 1.000 - - 1.000 - 1.000 rs9651751
71278915 rs9651752 - 1.000 - - 1.000 - 1.000 1.000 rs9651752
71279052 rs73530502 - 0.116 - - 0.116 - 0.116 0.116 0.116 rs73530502
',na.strings='-', header=TRUE, stringsAsFactors = FALSE, fill=TRUE)
与:
其中“line.txt”是您为制表符分隔的文本文件指定的名称
使用fill=TRUE
允许不完整的行,从?读取。表
:
填充逻辑。如果为TRUE,则在行长度不相等的情况下,
将隐式添加空白字段
na.字符串要解释的字符串的字符向量
作为NA值。空白字段也被认为是中缺少的值
逻辑、整数、数字和复杂字段
要使用示例输入,我只需执行以下操作,而不是使用file=“line.txt”
:
x <-
read.table(text='
position SNP rs11828013 rs7931369 rs567411332 rs184532784 rs7931583 rs555937772 rs9651750 rs9651751 rs9651752 rs73530502
71278426 rs11828013 rs11828013
71278461 rs7931369 - rs7931369
71278482 rs567411332 - - rs567411332
71278519 rs184532784 - - - rs184532784
71278580 rs7931583 - 1.000 - - rs7931583
71278733 rs555937772 - - - - - rs555937772
71278792 rs9651750 - 1.000 - - 1.000 - rs9651750
71278828 rs9651751 - 1.000 - - 1.000 - 1.000 rs9651751
71278915 rs9651752 - 1.000 - - 1.000 - 1.000 1.000 rs9651752
71279052 rs73530502 - 0.116 - - 0.116 - 0.116 0.116 0.116 rs73530502
',na.strings='-', header=TRUE, stringsAsFactors = FALSE, fill=TRUE)
将sep=“\t”添加到read.table()
data将sep=“\t”添加到read.table()中
数据是否使用read.delim?如果看不到原始数据的样子,就很难进行调试。我不知道,如果不知道您希望如何处理行与行之间的列数差异,任何人都可以提供合理的答案。此外,如果您确实希望,您可以编写循环的一些变体,使用read.table
和skip
和nrows
参数一次读取一行,并将每个结果存储在列表元素中。但同样,你们要做什么呢?我已经编辑并添加了输入表。我只想阅读它并将其处理成matrixBut——正如本杰明所说——你的矩阵应该是什么样的?“-”列是吗?使用read.delim?如果看不到原始数据的样子,就很难进行调试。我不知道,如果不知道您希望如何处理行与行之间的列数差异,任何人都可以提供合理的答案。此外,如果您确实希望,您可以编写循环的一些变体,使用read.table
和skip
和nrows
参数一次读取一行,并将每个结果存储在列表元素中。但同样,你们要做什么呢?我已经编辑并添加了输入表。我只想阅读它并将其处理成matrixBut——正如本杰明所说——你的矩阵应该是什么样的?是'-'列吗?哇。很明显,我没有充分阅读文档。我从未注意到fill
@logicstar您想要的输出是什么?请编辑您的问题@C8H10N4O2我的意思是,就像你已经展示了file=“position SNP…”但当我读到sameusing文件时,我没有;我得不到任何输出。代码:read.table(“sample”,na.strings=“-”,header=TRUE,stringsAsFactors=FALSE,fill=TRUE)read.table(“sample”,na.strings=“-”中存在错误,header=TRUE,stringsAsFactors=FALSE,:比列名多的列文件:您能给我显示相同的结果吗。@C8H10N4O2我编辑了我的问题。它是同一个文件,但这次是文件格式,而不是文本。,@logicstar我已经尽力回答了一个非常不清楚的问题。我怀疑您的文本文件名是否为“示例”。可能是“sample.txt”或其他什么。在你的问题中,文件名为“line.txt”,所以我使用了该文件名。哇。我显然没有足够的阅读文档。我从来没有注意到fill
@logicstar你想要的输出是什么?请编辑你的问题!@C8H10N4O2我的意思是,就像你显示的file=“position SNP…”但是当我读取sameusing文件时,我没有得到任何输出。代码:read.table(“sample”,na.strings=“-”,header=TRUE,stringsAsFactors=FALSE,fill=TRUE)read.table(“sample”,na.strings=“-”中的错误,header=TRUE,stringsAsFactors=FALSE,:比列名多的列文件:您能给我显示相同的结果吗。@C8H10N4O2我编辑了我的问题。它是同一个文件,但这次是文件格式,而不是文本。,@logicstar我已经尽力回答了一个非常不清楚的问题。我怀疑您的文本文件名是否为“示例”。它可能是“sample.txt”或其他内容。在您的问题中,该文件名为“line.txt”,因此我使用了该文件名。在这种情况下不需要该文件名。检查?read.table
如果sep=“”(read.table的默认值)分隔符为“空白”,即一个或多个空格、制表符、换行符或回车符。
在这种情况下不需要分隔符。选中?read.table
如果sep=“”(read.table的默认值)分隔符为“空白”,即一个或多个空格、制表符、换行符或回车符。
x <-
read.table(text='
position SNP rs11828013 rs7931369 rs567411332 rs184532784 rs7931583 rs555937772 rs9651750 rs9651751 rs9651752 rs73530502
71278426 rs11828013 rs11828013
71278461 rs7931369 - rs7931369
71278482 rs567411332 - - rs567411332
71278519 rs184532784 - - - rs184532784
71278580 rs7931583 - 1.000 - - rs7931583
71278733 rs555937772 - - - - - rs555937772
71278792 rs9651750 - 1.000 - - 1.000 - rs9651750
71278828 rs9651751 - 1.000 - - 1.000 - 1.000 rs9651751
71278915 rs9651752 - 1.000 - - 1.000 - 1.000 1.000 rs9651752
71279052 rs73530502 - 0.116 - - 0.116 - 0.116 0.116 0.116 rs73530502
',na.strings='-', header=TRUE, stringsAsFactors = FALSE, fill=TRUE)
x[,1] <- NULL
rownames <- x[,1]
x <- sapply(x[,-1], as.numeric)
rownames(x) <- rownames
x
rs11828013 rs7931369 rs567411332 rs184532784 rs7931583 rs555937772 rs9651750 rs9651751 rs9651752 rs73530502
rs11828013 NA NA NA NA NA NA NA NA NA NA
rs7931369 NA NA NA NA NA NA NA NA NA NA
rs567411332 NA NA NA NA NA NA NA NA NA NA
rs184532784 NA NA NA NA NA NA NA NA NA NA
rs7931583 NA 1.000 NA NA NA NA NA NA NA NA
rs555937772 NA NA NA NA NA NA NA NA NA NA
rs9651750 NA 1.000 NA NA 1.000 NA NA NA NA NA
rs9651751 NA 1.000 NA NA 1.000 NA 1.000 NA NA NA
rs9651752 NA 1.000 NA NA 1.000 NA 1.000 1.000 NA NA
rs73530502 NA 0.116 NA NA 0.116 NA 0.116 0.116 0.116 NA
data <- read.table(file="line.txt", na.strings = "-", sep = "\t",
header=TRUE, stringsAsFactors=FALSE, fill=TRUE)