У меня есть объект data.table, такой как
rn ARC_ancestor D2A1 D2B3 D3A1 D4A3 D5B3 H2A3 H2C3 H4A4 H4C2 H5A3
1: chromosome_1_6340194_G_C 0/1 <NA> 0/1 0/1 0/1 0/1 0/1 0/1 0/1 0/1 0/1
2: chromosome_1_6340269_A_T 0/1 0/1 0/1 0/1 0/1 0/1 0/1 0/1 0/1 0/1 0/1
3: chromosome_1_6340334_C_T 0/1 0/1 0/1 0/1 0/1 0/1 0/1 0/1 0/1 0/1 0/1
4: chromosome_1_6340544_T_C 0/1 0/1 0/1 0/1 0/1 0/1 0/1 0/1 0/1 0/1 0/1
5: chromosome_1_6340577_G_A 0/1 0/1 0/1 0/1 0/1 0/1 0/1 0/1 0/1 0/1 0/1
---
1188636: chromosome_6_11659513_T_C 0/1 0/1 0/1 0/1 0/1 0/1 0/1 0/1 0/1 0/1 0/1
1188637: chromosome_6_11659529_C_T 0/1 0/1 0/1 0/1 0/1 0/1 0/1 0/1 0/1 0/1 0/1
1188638: chromosome_6_11659774_T_C 0/1 0/1 0/1 0/1 0/1 0/1 0/1 0/1 0/1 0/1 0/1
1188639: chromosome_6_11659789_T_C 0/1 0/1 0/1 0/1 0/1 0/1 0/1 0/1 0/1 0/1 0/1
1188640: chromosome_6_11659817_C_T 0/1 0/1 0/1 0/1 0/1 0/1 0/1 0/1 0/1 0/1 0/1
. Я хочу, чтобы для всех r aws я получил сумму столбцов 2:12, 0/1 должно быть считается как отдельный 0 и как отдельный 1. Так, например, в примере я показываю сумму в первой строке = 10, вторую необработанную сумму = 11, et c ... Моя конечная цель - выбрать r aws где необработанная сумма равна макс. 1. Есть небольшая тонкость, в которой это может произойти, необработанный содержит 0/2, и в этом случае это следует рассматривать как 0 / 1.
До сих пор я придумал этот код
GT2 = GT[ARC_ancestor == "0/1", ARC_ancestor:= 1]
GT2 = GT[ARC_ancestor == "0/2", ARC_ancestor:= 1]
GT2 = GT[ARC_ancestor == "1/1", ARC_ancestor:= 1]
GT2 = GT[ARC_ancestor == "./1", ARC_ancestor:= 1]
GT2 = GT[ARC_ancestor == "./2", ARC_ancestor:= 1]
, который работает, и тогда мне нужно будет повторить это для каждого из моих столбцов 2-12. Это кажется неэффективным ... Я хотел бы что-то вроде:
для всех строк, где «0/1» или «0/2» или «1/1» или «./1» или «./2» появляются в столбце 2:12, заменяя «0/1» или « 0/2 "или" 1/1 "или" ./1 "или" ./2 "на 1
Я чувствую, что должен быть способ даже без записи для l oop.
Я попробовал это
GT[, (2:12) == "0/1" := 1]
и получил
Error in `[.data.table`(GT, , `:=`((2:12) == "0/1", 1)) :
LHS of := isn't column names ('character') or positions ('integer' or 'numeric')
d>
Я чувствую, что я не тот далеко ... но понятия не имею.
Спасибо
РЕДАКТИРОВАТЬ, фактически любое значение, отличное от "0/1" или "0/2" или "1/1" или " ./1 "или" ./2 "следует заменить на 0.