我有一个长字符串(从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。
答案 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)