Очень плохо знаком с R, я знаю, что циклы не всегда считаются хорошим вариантом в R, но только одна часть моего кода доставляет мне проблемы. По сути, я анализирую продольные данные: у каждого субъекта есть две таблицы измерений (каждая таблица содержит приблизительно 200 различных переменных исследования) из двух разных временных точек. Я прочитал их все, они хранятся как разные переменные в R, и я пытаюсь вычесть первую таблицу из второй для каждого участника.
Работает нормально, если я запускаю это как отдельную строку кода:
data_difference_n <- data_2_n - data_1_n
где n - идентификационный номер участника, но это будет означать запуск этой строки для примерно 1000 участников, чьи идентификаторы не являются последовательными номерами. Поэтому я попытался поместить его в цикл
participants <- c(100, 105, 106, 119 ...)
for (n in participants) {
...
data_difference_n <- paste("data_difference", subject, sep="_")
data_1_n <- paste("data_1", subject, sep="_")
data_2_n <- paste("data_2", subject, sep="_")
data_difference_n <- data_2_n - data_1_n
}
, что выдает ошибку «нечисловой аргумент бинарного оператора».
Каждая таблица данных представляет собой CSV с теми же свойствами, в основном числа и некоторые ячейки с N / A. Первый фрагмент кода дает мне желаемый результат: новая таблица, где все числовые значения - это значения в первой таблице, вычтенные из значений во второй, для этого участника. Меня смущает, почему второй бит кода не работает, потому что результат должен вызывать те же переменные, что и первый?
Я пытался прочитать много других сообщений об этой ошибке здесь и на других сайтах, но, похоже, не могу ее исправить. Этот говорит, что применение apply преобразует фрейм данных в матрицу символов. Это тот же принцип, что и цикл? Чувствую, что я упускаю что-то действительно простое и простое - извините, если да, и буду признателен за любую помощь!