首页 > 解决方案 > 在 R 中导入和清理文本文件

问题描述

我在以下格式的文本文件中有数据。

(0.00, 1.00), (1.00, 0.93), (2.00, 0.86), (3.00, 0.8), (4.00, 0.75), (5.00, 0.7), (6.00, 0.65), (7.00, 0.6), (8.00 , 0.56), (9.00, 0.52), (10.0, 0.49)

括号内的第一个元素是 x,第二个元素是 y。如何创建具有以下格式的矩阵。

    x    y
    0    1
    1    0.93
    2    0.86
    3    0.8
    4    0.75

我尝试了 read.table 的变体,但没有成功。将不胜感激任何帮助。

标签: rread.table

解决方案


首先,我们将您的字符串保存为文件,以便解决方案可重现:

str0 <- "(0.00, 1.00), (1.00, 0.93), (2.00, 0.86), (3.00, 0.8), (4.00, 0.75), (5.00, 0.7), (6.00, 0.65), (7.00, 0.6), (8.00, 0.56), (9.00, 0.52), (10.0, 0.49)"
file1 <- "str1.xt"
write(str0,file1)

解决方案:

x <-  scan(file1, character())
x <-  as.numeric(gsub("[(,)]","",x))
x <-  matrix(x,ncol = 2,byrow = TRUE,dimnames = list(NULL,c("x","y")))
as.data.frame(x)
 # x    y
 # 1   0 1.00
 # 2   1 0.93
 # 3   2 0.86
 # 4   3 0.80
 # 5   4 0.75
 # 6   5 0.70
 # 7   6 0.65
 # 8   7 0.60
 # 9   8 0.56
 # 10  9 0.52
 # 11 10 0.49

替代解决方案:

x <- gsub("), (",", ",scan(file1, character(),sep="_"),fixed = T)
as.data.frame(eval(parse(text=paste0("matrix(c",x,",ncol = 2,byrow = TRUE,dimnames = list(NULL,c('x','y')))"))))

推荐阅读