如何在具有相同名称的列之间更改值

时间:2019-04-08 17:47:11

标签: r for-loop dplyr subset

如果列名称匹配,我想用另一个数据框的列替换数据框的某些列:

我从名为train的data.frame中提取了一些数字列。然后,我创建了另一个名为all_box的data.frame,其中包含train的按列Boxcox转换。在那之后,我想用相同的同名替换那些归因于数据(all_box)的部分原始数据(火车)。我的代码是这样。

如果名称相同或不想更改任何值,我试图更改值。

for(i in 1:length(train)){

  train[,i]<-ifelse(colnames(train)[i]%in%colnames(all_box),

                    dplyr::select(all_box,colnames(train[i])),
                    dplyr::select(train,colnames(train[i])))
  }

但是我得到了错误:

  

错误:未知列id致电rlang::last_error()来查看   回溯

(列“ id”是我不想进行任何更改的原始数据的第一列的名称)

1 个答案:

答案 0 :(得分:0)

在这种情况下,不应使用ifelse函数。试试这个:

train2 <- train
my_cols <- colnames(train)[colnames(train) %in% colnames(all_box)]
train2[, my_cols] <- all_box[, my_cols]