Вопрос был о C, но если кто-то попытается сделать это с C ++ 11, то это может быть сделано с небольшими изменениями в включенном текстовом файле благодаря новым строковым литералам :
В C ++ сделайте следующее:
const char *s =
#include "test.txt"
;
В текстовом файле сделайте следующее:
R"(Line 1
Line 2
Line 3
Line 4
Line 5
Line 6)"
Поэтому должен быть только префикс в верхней части файл и суффикс в конце его. Между ними вы можете делать то, что хотите, не требуется специального экранирования, если вам не нужна последовательность символов )"
. Но даже это может работать, если вы укажете свой собственный разделитель:
R"=====(Line 1
Line 2
Line 3
Now you can use "( and )" in the text file, too.
Line 5
Line 6)====="
После некоторых проб и ошибок мне удалось воспроизвести вашу проблему.
Но позвольте мне начать с того, что существует очень важное различие между warning
и error
в R. Когда вы сообщите о проблеме, убедитесь, что четко различаются между ними.
x <- letters[1:5]
factor(x, labels=LETTERS[1:10])
Error in factor(x, labels = LETTERS[1:10]) :
invalid labels; length 10 should be 1 or 5
Эта ошибка возникает из-за того, что вы сообщаете factor()
повторно маркировать данные с уровнями, которые не существуют. Я указал 10 меток для переменной, которая содержит только 5 уровней. Это означает, что метки и уровни не совпадают.
Есть два способа исправить это:
Во-первых, чтобы R определить уровни и просто называть factor(x)
без любые параметры. (Предположительно, это, вероятно, то, что вы должны были сделать в своем коде.):
factor(x)
[1] a b c d e
Levels: a b c d e
Второе - вызвать factor(x)
и указать levels
, а не labels
:
factor(x, levels=letters[1:10])
[1] a b c d e
Levels: a b c d e f g h i j
Вы не предоставили образцы данных, поэтому мы не можем протестировать решение. Но попробуйте следующий код:
means_log_adj <- aggregate(lab_data[,delta_touse],
by = list(
factor(mydata_adj$Response_EP,),
factor(mydata_adj$sex),
factor(mydata_adj$timepoint)),
mean)