Экспортировать результаты функции в .rtf

#r #rtf

#r #rtf

Вопрос:

Я запускаю функцию be2x2 из пакета BE, и у меня возникают проблемы с распечаткой результатов в .rtf Функция работает нормально, когда я не указываю аргумент для печати результатов в виде файла rtf, и я получаю результаты, распечатанные на консоли, это просто не работает, когда я пытаюсь включитьАргумент rtfName. Я получаю сообщение об ошибке:

Ошибка в printCoefmat(x, digits = digits, signif.stars = signif.stars, : формальный аргумент «na.print» соответствует нескольким фактическим аргументам

Мой код выглядит следующим образом:

 library(BE)
be2x2(dta, Columns = c("AUClast", "Cmax", "Tmax"), 
      rtfName="rtffile.rtf")
 

Я пробовал разные способы присвоения имени файлу .rtf — с суффиксом .rtf или без него
Я также попытался определить файл отдельно:

 rtffile <- RTF("rtf")
 

и это тоже не сработало, я получаю ту же ошибку.

Я также пытался включить выходной путь в свой каталог, но это тоже не помогло. Я предполагаю, что в моей формулировке есть ошибка, но я просто не могу понять, что это может быть, любая помощь будет высоко оценена!

Вот пример моих данных:

    RowNum SUBJ GRP PRD TRT   Cmax Tmax   AUClast
1       1    A  TR   1   T 122.20 1.50 364.74595
2       2    B  RT   2   T 102.00 1.50 404.94560
3       3    C  RT   2   T 201.50 0.66 702.83140
4       4    E  TR   1   T  59.47 3.00 233.25030
5       5    F  RT   2   T  66.40 1.00 247.41105
6       6    G  TR   1   T  54.19 1.50 177.92155
7       7    H  RT   2   T 100.90 1.00 246.38780
8       8    I  TR   1   T  89.51 1.50 407.99185
9       9    K  RT   2   T 154.80 1.50 315.47610
10     10    L  TR   1   T  56.88 1.00 140.12540
11     11    M  TR   1   T  23.15 4.00 165.36500
12     12    N  RT   2   T  37.76 0.66  87.98820
13     13    O  RT   2   T  43.30 1.00 182.77325
14     14    P  TR   1   T  68.25 0.66 122.47815
15     15    Q  RT   2   T  27.54 1.50  67.98150
16     16    R  TR   1   T  60.43 2.00 274.57910
17     17    A  TR   2   R 126.20 1.50 375.42600
18     18    B  RT   1   R 206.90 1.50 595.03875
19     19    C  RT   1   R 122.80 1.50 471.16440
20     20    E  TR   2   R  37.26 1.00 190.39375
21     21    F  RT   1   R  84.67 2.00 257.45585
22     22    G  TR   2   R  55.27 1.50 175.37495
23     23    H  RT   1   R 218.70 1.00 381.82400
24     24    I  TR   2   R 181.90 0.66 360.82750
25     25    K  RT   1   R  59.68 1.50 218.47035
26     26    L  TR   2   R  25.56 2.00  91.80655
27     27    M  TR   2   R  57.05 1.50 269.01575
28     28    N  RT   1   R  47.20 0.66 105.56250
29     29    O  RT   1   R  70.88 1.50 290.14200
30     30    P  TR   2   R  97.46 1.50 230.48885
31     31    Q  RT   1   R  88.38 1.50 143.54870
32     32    R  TR   2   R  98.82 2.00 344.48280
 

Ответ №1:

Похоже, это ошибка в строке 41 be2x2 функции. Поскольку пакет опубликован Kyun-Seop Bae под лицензией GPL-3, вот копия функции с исправленной ошибкой:

 be2x2 = function(Data, Columns = c("AUClast", "Cmax", "Tmax"), rtfName="")
{
  if ("data.frame" %in% class(Data)) {
    bedata = Data
  } else if ("character" %in% class(Data)) {
    bedata = read.csv(Data)
  } else {
    stop("Data should be data.frame or file name!")
  }
  bedata = bedata[order(bedata$GRP, bedata$PRD, bedata$SUBJ),];
  if(!assert(bedata)) {
    cat("n Drop-outed subjects should not be included!n");
    return(NULL);
  }
  nCol = length(Columns)
  if (nCol == 0) stop("Input Error. Please, check the arguments!")
  if (rtfName != "") {
    rtf = RTF(rtfName)
    addHeader(rtf, title="Bioequivalence Test Result")
    addNewLine(rtf)
    addHeader(rtf, "Table of Contents")
    addTOC(rtf)
  }
  Result = vector()
  for (i in 1:nCol) {
    plot2x2(bedata, Columns[i])
    if (toupper(Columns[i]) != "TMAX"){
      cResult = test2x2(bedata, Columns[i])
    } else {
      cResult = hodges(bedata, Columns[i])
    }  
    if (rtfName != "") {
      addPageBreak(rtf)
      addHeader(rtf, title=Columns[i], TOC.level=1)
      LineResult = capture.output(print(cResult))
      for (j in 1:length(LineResult)) addParagraph(rtf, LineResult[j])
      addPageBreak(rtf)
      addPlot(rtf, plot.fun=plot2x2a, width=6.5, height=6.5, res=300, bedata=bedata, Var=Columns[i])
      addPageBreak(rtf)
      addPlot(rtf, plot.fun=plot2x2b, width=6.5, height=6.5, res=300, bedata=bedata, Var=Columns[i])
    }
    Result = c(Result, list(cResult))
  }
  if (rtfName != "") {
    addPageBreak(rtf)
    addSessionInfo(rtf)
    done(rtf)
  }
  names(Result) = Columns
  return(Result)
}
 

Теперь вы должны иметь возможность сохранить .rtf файл:

 be2x2(dta, Columns = c("AUClast", "Cmax", "Tmax"), rtfName = "Test.rtf")