如何在R中保留read.table的空格字符?

问题描述

我有一个制表符分隔的文件,其中某些列带有1个或多个空格字符,即除分隔符(制表符)以外的空白,我需要保留这些空格。例如,可以使用bash shell命令生成文件

echo -e " \t*\t  \t*\t*\t  \t*" > test.tab

然后我在R中读取了文件

f=read.table("test.tab",header=FALSE,sep="\t",strip.white=FALSE,na.strings='');
f
V1 V2 V3 V4 V5 V6 V7
1 NA  * NA  *  * NA  *
s=as.character(f)
s
[1] "NA" "*"  "NA" "*"  "*"  "NA" "*" 

我实际上希望s是“ spacestarspacespacestarstarstarspacestar”,而不是字符串中的NA。

我也尝试了用逗号分隔的格式,但是得到了相同的结果。

echo -e ",*,*" > test1.csv # or
echo -e "' ','  ',*" > test2.csv
f=read.table("test1.csv",sep=",",na.strings='');
f
V1 V2 V3 V4 V5 V6 V7
1 NA  * NA  *  * NA  *
as.character(f)

[1]“ NA”“ ”“ NA”“ ”“ ”“ NA”“ ” f = read.table(“ test2.csv”,标头= FALSE,sep =“,”,strip.white = FALSE,na.strings ='')); as.character(f) “ NA”“ ”“ NA”“ ”“ ”“ NA”“

如何获取空格字符? TIA

解决方法

这是因为它没有在这些列中读取为字符

read.table('test.tab',sep = '\t',colClasses = 'character')

将正确读取空格。