Если это matrix
(или даже data.frame
), создайте логическую матрицу с помощью оператора сравнения. Это дает TRUE/FALSE
логическую матрицу, которая имеет значение 1/0. Если мы добавим к нему 1, он изменится на 2/1
и на основе этого индекса мы сможем заменить значения (в R
, индексирование начинается с 1)
df[] <- c("sell", "buy")[(df >0) + 1]
Также вв комментариях было рекомендовано не использовать sapply
для matrix
, поскольку matrix
является vector
с dim
атрибутами, а элемент unit является одним элементом (в data.frame
, unit является столбцом - такесли мы используем sapply/lapply
, он проходит по столбцам). Здесь он проходит через элемент matrix
. Таким образом, это может быть неэффективно. Для matrix
, apply
с MARGIN
можно использовать
df[] <- apply(df, 2, FUN = function(x) ifelse(x > 0, "sell", "buy"))