Я пытаюсь вычислить разницу между разными столбцами, я сделал это с помощью цикла, но я знаю, что это не элегантное решение и не лучшее в R (неэффективно), также мои результаты дублируют результаты, а не логическую операцию (disp -disp или hp_disp и disp_hp).
В моих реальных данных есть Na, я пытался их смоделировать. Моя цель - попытаться улучшить мою команду, чтобы получить ту же таблицу ниже.
Пример моей команды:
names(mtcars)
mtcars$mpg[mtcars$am==1]=NA
vars1= c("mpg","cyl","disp","hp")
vars2= c("mpg","cyl","disp","hp")
df=data.frame()
df_all=data.frame()
df_all=length(mtcars)
for(i in vars1){
for(k in vars2) {
df= mtcars[[i]]-mtcars[[k]]
df_all=cbind(df_all, df)
length =ncol(df_all)
colnames(df_all)[length]= paste0(i,"_",k)
}
}
head(df_all)
disp_mpg disp_cyl disp_disp disp_hp hp_mpg hp_cyl hp_disp hp_hp
[1,] NA 154 0 50 NA 104 -50 0
[2,] NA 154 0 50 NA 104 -50 0
[3,] NA 104 0 15 NA 89 -15 0
[4,] 236.6 252 0 148 88.6 104 -148 0
[5,] 341.3 352 0 185 156.3 167 -185 0
[6,] 206.9 219 0 120 86.9 99 -120 0