Допустим, у меня есть data.tableВычитание каждый столбец из каждого другого столбца в R data.table
set.seed(1) # to make the example reproducible
ex<-data.table(AAA=runif(100000),
BBB=runif(100000),
CCC=runif(100000),
DDD=runif(100000),
FLAG=c(rep(c("a","b","c","d","e"),200000)))
Я хочу, чтобы вычесть из колонки AAA
любой другой колонке, то из BBB
каждый оставшийся столбец (за исключением FLAG) и так далее, так что выход будет выглядеть ...
ex[,list(AAA_BBB=AAA-BBB,
AAA_CCC=AAA-CCC,
AAA_DDD=AAA-DDD,
BBB_CCC=BBB-CCC,
BBB_DDD=BBB-DDD,
CCC_DDD=CCC-DDD)]
есть data.table синтаксис, который может сделать это чисто, не зная, сколько столбцов есть или то, что их имена?
Работа с строками в 1000000 вашем примере не очень весело. Эффективность в вашем вопросе не упоминалась ... это проблема? Во всяком случае, я только пробовал свой ответ с десятью строками. – Frank
@Frank Я считаю, что потребность в эффективности в значительной степени подразумевается при использовании data.table. – Roland
@Frank сожалеет о чрезмерных строках в примере, который я только что скопировал, вставил предыдущий вопрос, который я спросил, где большое количество строк было уместно для примера. –