如何更改具有相同colnames的列之间的值

问题描述 投票:0回答:1

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

我从名为train的data.frame中提取了一些数字列。然后我制作了第二个名为all_box的data.frame,其中包含train的逐列boxcox变换。在那之后,我想用相同的名字替换原始数据(火车)的部分推算数据(all_box)。我的代码是这个..

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

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'是原始数据的第一列的名称,我不想做任何更改)

r for-loop dplyr subset
1个回答
0
投票

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

train2 <- train
my_cols <- colnames(train)[colnames(train) %in% colnames(all_box)]
train2[, my_cols] <- all_box[, my_cols]
© www.soinside.com 2019 - 2024. All rights reserved.