Я создаю пакет R в биоинформатике, и у меня есть таблица данных, в которой одно из имен столбцов является переменным, оно будет основано на входных геномных данных. У меня есть строка с условным условием, где мне нужно два условия: один столбец в строке - NA, а другой столбец больше, чем какое-то число, которое даст пользователь.
Я пытался использовать is.na () с чем-то вроде mergeframe_dt [, 2], где я указываю столбец #, а не типичное имя столбца.
Как правило, что-то вроде этого будет работать:
mergeframe_dt[is.na(new)&Reads>5, new := factor(0)]
Но проблема в том, что имя нового столбца является переменным, оно будет разным в каждом случае. Ранее в моем коде я в основном установил имя геномного файла, который пользователь будет вводить.
В идеале я хочу что-то, что работает следующим образом, где он проверяет, является ли второй столбец таблицы данных mergeframe_dt NA и если столбец «Reads» больше 5.
mergeframe_dt<-as.data.table(mergeframe)
mergeframe_dt[is.na(mergeframe_dt[,2])&Reads>5, new := factor(0)]
Я тоже пробовал это, но оно также не работало:
mergeframe_dt[is.na(mergeframe_dt$(colnames(mergeframe_dt)[2]))&Reads>5, new := factor(0)]
Ошибка:
Пример 1:
Error in `[.data.table`(mergeframe_dt, is.na(mergeframe_dt[, 2]) & Reads > :
i is invalid type (matrix). Perhaps in future a 2 column matrix could return a list of elements of DT (in the spirit of A[B] in FAQ 2.14). Please report to data.table issue tracker if you'd like this, or add your comments to FR #657.
Пример 2:
Error: unexpected '(' in "mergeframe_dt[is.na(mergeframe_dt$("