r - 提取文本并放入表格

标签 r string

作为预测包中的 checkresiduals() 函数和 rbind() 函数的结果,我得到了这个矩阵 (ETS_RESIDUALS):

#Result of checkresiduals() function

     [,1]                                         
[1,] "Q* = 161.83, df = 18.8, p-value < 2.2e-16"  
[2,] "Q* = 125.46, df = 18.8, p-value < 2.2e-16"  
[3,] "Q* = 263.65, df = 18.8, p-value < 2.2e-16"  
[4,] "Q* = 81.503, df = 18.8, p-value = 8.763e-10"
[5,] "Q* = 36.616, df = 18.8, p-value = 0.008178" 

str(ETS_RESIDUALS)
#chr [1:5, 1] "Q* = 161.83, df = 18.8, p-value < 2.2e-16" "Q* = 125.46, df = 18.8, p-value < 2.2e-16" "Q* = 263.65, df = 18.8, p-value < 2.2e-16" ...

class(ETS_RESIDUALS)
#[1] "matrix"

现在,我的目的是用 grep() 或其他函数将这行文本分割成一个 data.frame(有四列 TEST、Q*、df、p 值),如下例所示:
TEST      Q*        df        p-value
--------------------------------------------
TEST_1  161.83     18.8        2.2e-16  
TEST_2  125.46     18.8        2.2e-16  
TEST_3  263.65     18.8        2.2e-16  
TEST_4  81.503     18.8        8.763e-10
TEST_5  36.616     18.8        0.008178 

我尝试使用这行代码,但结果并不好。
ETS_RESIDUALS %>%   
  stringr::str_replace_all("(\\S+) =", "`\\1` =") %>%   
  paste0("data.frame(", ., ", check.names = FALSE)")

任何人都可以帮助我使用此代码吗?

最佳答案

library(dplyr)
library(tidyr)
library(stringr)
#separate based on ,
separate(data.frame(mat), mat ,into = c('Q*','df','p-value'),sep = ',') %>% 
mutate_all(~str_extract(.,'(?<=\\=|\\<\\s).*')) %>% 
#Use positive look-behind to extract everything after = or < followed by a space
mutate(TEST=paste0('TEST_',1:n())) %>% select(TEST,everything())

    TEST      Q*    df    p-value
1 TEST_1  161.83  18.8    2.2e-16
2 TEST_2  125.46  18.8    2.2e-16
3 TEST_3  263.65  18.8    2.2e-16
4 TEST_4  81.503  18.8  8.763e-10
5 TEST_5  36.616  18.8   0.008178

数据
mat <- structure(c("Q* = 161.83, df = 18.8, p-value < 2.2e-16", "Q* = 125.46, df = 18.8, p-value < 2.2e-16", "Q* = 263.65, df = 18.8, 
       p-value < 2.2e-16", "Q* = 81.503, df = 18.8, p-value = 8.763e-10", "Q* = 36.616, df = 18.8, p-value = 0.008178"), 
      .Dim = c(5L, 1L))

关于r - 提取文本并放入表格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55761411/

相关文章:

r - 在 R plotly d3js 如何用空格而不是逗号格式化数字?

C++ Linux Sockets 在 char *msg 中添加变量

javascript - 从 javascript 中的字符串列表中选择随机条目

python - 提取以符号开头和结尾的子字符串并在Python中替换为变量

string - 组合两个字符串以形成一个新字符串

r - 匹配子集中的一个值并返回一个值

r - 将最后完成的事情保存为对象?

javascript - rhandsontable 具有行突出显示和复选框列

r - 在密度图的顶部添加文本标签以标记不同的组

c - AVR32 UC3A0 如何利用 USART 中断示例并接收字符串然后做一些事情