【问题标题】:Using tidyverse and matconv to convert Matlab code to R code使用 tidyverse 和 matconv 将 Matlab 代码转换为 R 代码
【发布时间】:2021-05-15 12:03:16
【问题描述】:

Matlab 代码可以使用以下命令转换为R 代码

library(matconv)

mat2r(
   inMat           = "A.m"
  , pathOutR       = "A.R"
  , funcConverters = NULL
  , dataConverters = NULL
  , verbose        = 1
)

mat2r(
   inMat           = "B.m"
  , pathOutR       = "B.R"
  , funcConverters = NULL
  , dataConverters = NULL
  , verbose        = 1
)

但是,我正在寻找一些更高效的代码,如下所示:

library(purrr)
dir(path = ".", pattern = "*.m", full.names = FALSE) %>%
map(
  .x = .
, .f = mat2r(
           inMat           = .
          , pathOutR       = paste0(., ".R")
          , funcConverters = NULL
          , dataConverters = NULL
          , verbose        = 1
        )
    )

这对我不起作用。请有任何提示。

【问题讨论】:

    标签: r matlab tidyverse purrr


    【解决方案1】:

    尝试以下方法:

    dir(path = ".", pattern = "*.m") %>%
      purrr::map(.f = ~mat2r(
            inMat           = .x
          , pathOutR       = sub('m$', "R", .x)
          , funcConverters = NULL
          , dataConverters = NULL
          , verbose        = 1
        )
      )
    

    【讨论】:

    • 感谢@Ronak 提供有用的答案。但是,在我的实际问题中,出现以下错误:Error in gsub("end", sprintf("length(%s)", varName), lin) : invalid 'replacement' argument。任何提示!
    • 您是否使用了答案中的代码以外的其他代码?我不确定关于gsubsprintf 等的错误来自哪里,因为我们在这里没有使用这些功能。也许,错误来自转换时的 matlab 文件之一?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-28
    • 2019-05-05
    • 1970-01-01
    相关资源
    最近更新 更多