У меня большой файл ~ 100 тыс. Строк и 100 столбцов, и я хочу создать извлечение информации из четырех столбцов на основе другого столбца.Существует столбец с именем Caller
, и этот столбец сообщает, какие столбцы с .sample
будут содержать информацию, отличную от noSample
.
Я пробовал с if and else if
утверждениями, но иногда выполняются два условия и записьвсе возможные комбинации потребуют больших усилий, и я уверен, что есть лучший способ сделать это
Мой реальный data.frame выглядит следующим образом:
EDIT
Df <- data.frame(A = c("chr1", "chr1", "chr1", "chr1", "chr1", "chr1", "chr1"),
B= c(10,12,13,14,15,16,17),
Caller = c("A", "B", "C", "D", "A,C", "A,B,C", "B,D"),
A.sample = c("3xd|432", "noSample","noSample","noSample","1234|567|87sd","234|456|897a","noSample"),
dummy1 = 1:7,
B.sample = c("noSample", "456|789|asd", "noSample","noSample","noSample","674e|7892|123|432","bgcf|12er|567|zxs3|12ple"),
dummy2 = 1:7,
C.sample = c("noSample","noSample", "zxc|vbn|mn","noSample","gfd3|123|456|789","674e|7892|123","noSample" ),
dummy3 = 1:7,
D.sample = c("noSample","noSample", "noSample", "poi|uyh|gfrt|562", "noSample", "noSample", "567|zxs3|12ple"), stringsAsFactors=FALSE)
Я хочу извлечь для каждой из строк вектор выборок.Это может быть сохранено в списке или другом объекте R.Я буду использовать эти образцы для сопоставления с data.frame, где каждый образец связан с процессом.
My desired output would be
>row1
3xd|432
>row2
456|789|asd
>row3
zxc|vbn|mn
>row4
poi|uyh|gfrt|562
>row5
[1]1234|567|87sd [2]gfd3|123|456|789
>row6
[1]234|456|897a [2]674e|7892|123|432 [3]674e|7892|123
>row7
[1]bgcf|12er|567|zxs3|12ple [2]567|zxs3|12ple
Мой желаемый результат не будет включать в себя канал |
между образцами, но я могу избавитьсяс использованием strsplit
Поскольку data.frame большой, скорость будет существенной.