R:将字符串解析为矩阵

时间:2014-12-23 14:56:43

标签: r parsing

我有一个长字符串(从xml中提取)看起来像这样(一部分):

x <- "81 11780 26978 24271 6195\n92 13319 17032 233 16969\n98 17433 13883 6769 18086\n"

这实际上是整数的Nx5矩阵。如何将此字符串转换为最有效的矩阵?

substr(x,26,26)返回"\n"

我在Windows x64中使用R 3.1.2。

4 个答案:

答案 0 :(得分:9)

使用scan

matrix(scan(text = x),nrow = 3,byrow = TRUE)
Read 15 items
     [,1]  [,2]  [,3]  [,4]  [,5]
[1,]   81 11780 26978 24271  6195
[2,]   92 13319 17032   233 16969
[3,]   98 17433 13883  6769 18086

编辑使用byrow = TRUE,这可能是你想要的。

答案 1 :(得分:2)

read.table可让您将文字转换为data.frame

df <- read.table(text=x)

获得matrix

m <- as.matrix(df)

答案 2 :(得分:1)

试试这个:

x.split <- gsub(x,"\n","")
x.num <- as.numeric(x.split)
x.matrix <- matrix(x.num,ncol=5,byrow=TRUE)

第一行将长字符分成具有单个数字的向量(仍为字符)。下一行转换为数字,最后一行定义矩阵。

答案 3 :(得分:1)

x <- "81 11780 26978 24271 6195\n92 13319 17032 233 16969\n98 17433 13883 6769 18086\n"
#generate data frame
data <- read.csv(textConnection(x),sep=" ",header=F)
#generate matrix
data <- as.matrix(data)