Нечисловой аргумент бинарного оператора в R для данных, считанных из CSV - PullRequest
0 голосов
/ 02 июля 2018

Очень плохо знаком с 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 преобразует фрейм данных в матрицу символов. Это тот же принцип, что и цикл? Чувствую, что я упускаю что-то действительно простое и простое - извините, если да, и буду признателен за любую помощь!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...