如果列名称匹配,我想用另一个数据框的列替换数据框的某些列:
我从名为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”是我不想进行任何更改的原始数据的第一列的名称)
答案 0 :(得分:0)
在这种情况下,不应使用ifelse
函数。试试这个:
train2 <- train
my_cols <- colnames(train)[colnames(train) %in% colnames(all_box)]
train2[, my_cols] <- all_box[, my_cols]