从R

时间:2016-10-04 23:09:10

标签: r character text-mining

问题: 我需要从文本文件中提取数值,并将字符串转换为数值。

例如,在我的文本文件中:

Yada yada yada ...

基频:0.247 0.355 0.158 0.261

等等等等......

alpha [0]:0.466477 rate [0] ac ag at cg ct gt:0.0987 2.4837 0.4734 0.4902 0.2713 1.0000

更多的话...... 文本文件结束。

我需要退出:  基数(向量,应为(0.247,0.355,0.158,0.261))  alpha(一个应该等于0.466477的变量)  速率(矢量应该等于(0.0987,2.4837,0.4734,0.4902))

我做了什么

library(tm)
#Read in text file
myfile <- "RAxML_info.gtr1"
mdata <- readLines(my file)
cline <- grep("Base frequencies:",mdata,value=TRUE)
as.vector(gsub("Base frequencies: ", "", cline))
  
    

[1]“0.247 0.335 0.158 0.261”

  

这只是作为一个字符串处理,我不能让它成为数值的向量。

使用RStudio和R版本3.3.1

3 个答案:

答案 0 :(得分:0)

根据@ HubertL的评论,您可以使用strsplit从您所在的位置到达您想去的地方:

line <- "0.247 0.335 0.158 0.261 "
line <- strsplit( line, split = " " )[[1]]
line <- as.numeric( line )

line
[1] 0.247 0.335 0.158 0.261

答案 1 :(得分:0)

output <- "0.247 0.335 0.158 0.261 " 
as.numeric(unlist(strsplit(output, " ")))
[1] 0.247 0.335 0.158 0.261

答案 2 :(得分:0)

我们可以使用scan

scan(text=output, what = numeric(), quiet=TRUE)
#[1] 0.247 0.335 0.158 0.261

数据

output <- "0.247 0.335 0.158 0.261 "