У меня есть df со значениями 150 строк, и я хотел бы, чтобы R было l oop или иным образом повторить следующее для каждой строки и столбца в df;
пример данных
df <- data.frame('criteria1' = c('x','1', 'X', '', 'X'), "criteria2" = c('y','3', '', 'X', ''), "criteria3" = c('y','7', '', 'X', 'X'))
Если X появляется в строке, я хотел бы, чтобы функция брала значения из двух первых строк и вставляла их вместе с '=' между ними. Следующее отлично работает для первого столбца
df$criteria1 <- ifelse(df$criteria1 == 'X', paste(df$criteria1 [1], '=', df$criteria1 [2]),'')
head(df)
Проблема в том, что когда я пытаюсь сделать это для всех столбцов в фрейме данных
df[] <- lapply(df, function(x) ifelse(df$x== 'X', paste(x[1], '=', x[2]),''))
Все ячейки становятся NA. Я пробовал использовать разные версии приведенного выше кода, но ничего не дает ожидаемого результата:
head(data.frame('criteria1' = c('x','1', 'x=1', '', 'x=1'), "criteria2" = c('y','3', '', 'y=3', ''), "criteria3" = c('y','7', '', 'y=7', 'y=7')))