#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")