我在R 2.10.0中正在阅读这样的文本文件
248585_at 250887_at 245638_s_at AFFX-BioC-5_at
248585_at 250887_at 264488_s_at 245638_s_at AFFX-BioC-5_at AFFX-BioC-3_at AFFX-BioDn-5_at
248585_at 250887_at
Run Code Online (Sandbox Code Playgroud)
使用命令集群<-read.delim("test",sep ="\ t",fill = TRUE,header = FALSE)
现在,我必须将此文件中的每一行传递给BioConductor函数,该函数仅将字符向量作为输入.我的问题是在这个"集群"对象上使用"as.character"会将所有内容转换为数字字符串.
> clusters[1,]
V1 V2 V3 V4 V5 V6 V7
1 248585_at 250887_at 245638_s_at AFFX-BioC-5_at
Run Code Online (Sandbox Code Playgroud)
但
> as.character(clusters[1,])
[1] "1" "1" "2" "3" "1" "1" "1"
Run Code Online (Sandbox Code Playgroud)
有没有办法保留原始名称并将它们放入字符向量中?
也许它会有所帮助:"read.delim"文件给出的"cluster"对象属于"list"类型.
非常感谢 :-)
费德里科
默认情况下,字符列将转换为因子.您可以通过设置as.is=TRUE参数来避免此问题:
clusters <- read.delim("test", sep="\t", fill=TRUE, header=FALSE, as.is=TRUE)
Run Code Online (Sandbox Code Playgroud)
如果只将参数从文本文件传递到字符向量,则可以执行以下操作:
x <- readLines("test")
xx <- strsplit(x,split="\t")
xx[[1]] # xx is a list
# [1] "248585_at" "250887_at" "245638_s_at" "AFFX-BioC-5_at"
Run Code Online (Sandbox Code Playgroud)