Моя цель - выполнить несколько операций с столбцами в одной строке кода без жесткого кодирования имен переменных.
structure(list(Subject = 1:6, Congruent_1 = c(359, 391, 384,
316, 287, 403), Congruent_2 = c(361, 378, 322, 286, 276, 363),
Congruent_3 = c(342, 355, 334, 274, 297, 335), Congruent_4 = c(365,
503, 324, 256, 266, 388), Congruent_5 = c(335, 354, 320,
272, 260, 337), Incongruent_1 = c(336, 390, 402, 305, 310,
400), Incongruent_2 = c(366, 407, 386, 280, 243, 393), Incongruent_3 = c(323,
455, 317, 308, 259, 325), Incongruent_4 = c(361, 392, 357,
274, 342, 350), Incongruent_5 = c(300, 366, 378, 263, 258,
349)), row.names = c(NA, 6L), class = "data.frame")
Мои данные выглядят так .
Мне нужно выполнить вычитание столбцов и сохранить эти новые значения в новых столбцах. Например, новый столбец с именем selhist_1 должен быть вычислен как Incongruent_1 - Congruent_1. Я попытался написать для l oop, который индексирует существующие столбцы по их именам и создает новые столбцы, используя ту же переменную индексации:
for(i in 1:5)(
DP4 = mutate(DP4, as.name(paste("selhistB_",i,sep="")) = as.name(paste("Incongruent_",i,sep="")) - as.name(paste("Congruent_",i,sep="")))
)
, но я получил эту ошибку:
Error: unexpected '=' in: "for(i in 1:5)( DP4 = mutate(DP4, as.name(paste("selhistB_",i,sep="")) ="
Я предпочитаю использовать этот модульный подход, а не жестко кодировать и писать «selhistB = incongruent_1 - congruent_1» пять раз, используя функцию mutate()
.
Мне также интересно, смогу ли я достичь той же цели в длинной версии этих данных, и, возможно, это будет иметь больше смысла.