Рассмотрим мы имеем числовую data.frame foo
и хотите найти сумму каждых двух столбцов:Установить имена столбцов при вызове функции
foo <- data.frame(x=1:5,y=4:8,z=10:14, w=8:4)
bar <- combn(colnames(foo), 2, function(x) foo[,x[1]] + foo[,x[2]])
bar
# [,1] [,2] [,3] [,4] [,5] [,6]
#[1,] 5 11 9 14 12 18
#[2,] 7 13 9 16 12 18
#[3,] 9 15 9 18 12 18
#[4,] 11 17 9 20 12 18
#[5,] 13 19 9 22 12 18
Все хорошо, за исключением имен столбцов, которые отсутствуют bar
, Я хочу, чтобы имена столбцов из bar
, чтобы показать соответствующие столбцы в foo
, например, в этом примере:
colnames(bar) <- apply(combn(colnames(foo),2), 2, paste0,collapse="")
colnames(bar)
#[1] "xy" "xz" "xw" "yz" "yw" "zw"
Это просто, но я хочу, чтобы выполнить разметку столбцов в одной и той же bar <- combn(...)
команды. Там в любом случае?
+1 для использования нескольких линий. Четкость до краткости, код для чтения, а не компьютеры. –
Интересный ответ. Есть ли способ присвоить имя столбца 'function (x)' result? Если это так, мы можем пропустить функцию 'apply (...)'. Я знаю, что это не работает внутри функции 'combn()' в соответствии с ответом @ RomanLuštrik, но это может быть полезно в другом месте. – Ali