作为checkresiduals()包中forecast函数的结果,我得到了以下结果:

#Result of checkresiduals() function
test <- "Q* = 4.5113, df = 4.6, p-value = 0.4237"

现在,我的意图是将带有grep()或其他函数的这一行文本拆分为一个data.frame(具有三列Q*dfp-value),如以下示例所示:
    Q*         df       p-value
    4.5113     4.6      0.4237

谁能帮我这个代码?

最佳答案

这是两种替代方法:

  • 将字符串转换为DCF格式并使用read.dcf()
  • “根据语言进行计算”:将字符串转换为有效的R表达式,并使用parse() / eval()
  • read.dcf()
    将字符串read.dcf()转换为DCF(Debian控制文件)格式后,请使用test函数。
    (顺便说一句,每个R包的DESCRIPTION文件都是DCF格式。)
    library(magrittr) # piping used for readability
    test %>%
      stringr::str_replace_all("=", ":") %>%        # replace "=" by ":"
      stringr::str_replace_all(",\\s*", "\n") %>%   # replace ", " by line break
      textConnection() %>%
      read.dcf(all = TRUE)
    



    所有列均为字符类型。

    语言计算
    library(magrittr) # piping used for readability
    test %>%
      stringr::str_replace_all("(\\S+) =", "`\\1` =") %>%
      paste0("data.frame(", ., ", check.names = FALSE)") %>%
      parse(text = .) %>%
      eval()
    



    所有列的类型都是double。
    test %>%
      stringr::str_replace_all("(\\S+) =", "`\\1` =") %>%
      paste0("data.frame(", ., ", check.names = FALSE)")
    

    退货
    "data.frame(`Q*` = 4.5113, `df` = 4.6, `p-value` = 0.4237, check.names = FALSE)"
    

    然后将其解析为表达式并求值。

    注意,所有变量名都用引号引起来,以处理语法上无效的变量名,例如Q*p-value

    关于r - Grep文字并放入数据框,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55757783/

    10-11 17:50