Исходя из таблицы data.table, DT, с m строковыми столбцами, как можно помечать строки, в которых строка, скажем, «BlaBla» появляется хотя бы в одном столбце?
Что я хочу:
DT[, flag_BlaBLa:=(test if "BlaBLa" appears in any column except the first one)]
Я не хочу делать явную ссылку на имена столбцов.Скорее мне нужно сослаться на столбец 2 на максимальное число столбцов в DT (возможно: 2:ncol(DT)
).Почему бы и нет?На самом деле, у меня есть список data.frames с различным количеством столбцов в каждом.Мне нужно создать флаг, как указано выше, для всех data.frames в списке
Edit1: добавление воспроизводимого примера.Edit2: изменение некоторых строк «BlaBLa» на «BlaBLa + что-то».Это также должно считаться совпадением, так как они включают «BlaBLa».
DT начинается с cols a,b,c
, и я хочу, чтобы скрипт создал flag_BlaBLa
.Конечный результат будет:
DT <- data.table(a=c("x","y","z",'w'),
b=c('BlaBLa','BLe','Bli','BlaBLaSometing'),
c=c('Bla','BLe','BlaBLa','Blo'),
flag_BlaBLa=c(T,F,T,T)
)
Для списка конечный результат должен быть:
DT1 <- data.table(a=c("x","y","z",'w'),
b=c('BlaBLa','BLe','Bli','BlaBLaSomething'),
c=c('Bla','BLe','BlaBLa','Blo'),
flag_BlaBLa=c(T,F,T,T)
)
DT2 <- data.table(a=c("q","j","p"),
b=c('BLe','Bli','BlaBLa'),
flag_BlaBLa=c(F,F,T)
)
l <- list(DT1,DT2)