всем! У меня возник вопрос. В наборе данных iris для каждой строки я хотел получить имена столбцов, значение которых> 1, а затем объединить их. Ожидаемый результат выглядит следующим образом: SL & SW & PL, SL & SW & PL & PW ...
library(tidyverse)
data("iris")
colnames(iris)[1:4] <- c("SL","SW","PL","PW") # simplify the colnames
for (i in 1:nrow(iris)) {
row_i <- iris[i,1:4]
iris$new_var[i] <- names(row_i)[row_i>2] %>% paste0(.,collapse = "&")
}
Вот несколько примеров new_var, и это результат, который я ожидал
> iris$new_var[c(1,30,60,90,120)]
[1] "SL&SW" "SL&SW" "SL&SW&PL" "SL&SW&PL" "SL&SW&PL"
Однако функция mutate не сработало, как я ожидал.
fournames <- c("SL","SW","PL","PW")
iris %>% mutate(new_var=paste0(fournames[(SL:PW)>2],collapse = "&"))
Как повторить результат for-l oop с помощью функции изменения?