У меня есть таблица data.table с множеством пронумерованных столбцов. В качестве более простого примера у меня есть следующее:
dat <- data.table(cbind(col1=sample(1:5,10,replace=T),
col2=sample(1:5,10,replace=T),
col3=sample(1:5,10,replace=T),
col4=sample(1:5,10,replace=T)),
oneMoreCol='a')
Я хочу создать новый столбец следующим образом: в каждой строке мы добавляем значения в столбцы из col1-col4, если значение не NA или 1.
Мой текущий код для этого имеет два цикла for, что явно не подходит для этого:
for(i in 1:nrow(dat)){
dat[i,'sumCol':={temp=0;
for(j in 1:4){if(!is.na(dat[i,paste0('col',j),with=F])&
dat[i,paste0('col',j),with=F]!=1
){temp=temp+dat[i,paste0('col',j),with=F]}};
temp}]}
Я был бы признателен за любой совет, как удалить эти циклы for . Мой код работает на более крупной таблице data.table, и его выполнение занимает много времени.