У меня есть столбец в фрейме данных, состоящем из 8-битовой битовой маски. Я хочу «взорвать» это 8 новых столбцов в моем кадре данных. Битовый определяются как:Как создать несколько столбцов из столбца в кадре данных и cbind() в dataframe
mask <- c('term1'=1,'term2'=2,'term3'=4,'term4'=8,...) #etc
к концу, я хочу 8 новых столбцов в моем dataframe имени TERM1 через term8 с TRUE/FALSE значение отметить, было ли установлено бит. Например, с 3 битовой маской:
id bitmask
a 1
b 4
c 5
будет приходить:
id bitmask term1 term2 term3
a 1 TRUE FALSE FALSE
b 4 FALSE FALSE TRUE
c 5 TRUE FALSE TRUE
Я получил, насколько писать функцию, которая создает значение столбцов битовых:
addl <- as.data.frame(sapply(data$bitmask, function(x) bitwAnd(x,mask) > 0))
Но я, очевидно, что-то делаю неправильно, потому что, когда я пытаюсь увидеть результат с помощью head (addl), он просто зависает. Я даже не дошел до точки cbind() или не задал имена столбцов. Любая помощь, понимающая, что я делаю неправильно, будет очень признательна!
попробуйте использовать ': =' для создания новых столбцов –
Гэри, спасибо за предложение. Я немного глупо спрашиваю об этом, но я искал операторов в R, и я не видел: = нигде. ?: = из RStudio ничего не дало? –
Это пакет 'data.table'. И я думаю, что лучше использовать '??": = "' для поиска этой функции (если 'data.table' уже установлен). –