R-替换多个数据帧中colname中的模式



我发现了一些关于这个主题的线程,但没有回答我的特定问题。我有多个数据帧和一个由这些数据帧的名称组成的向量。我使用for循环对所有循环执行相同的操作,例如重命名列:

for (i in import_names_vector) {
assign(i, rename(get(i), x = var1, y = var2, z = var3))
}

在其他几列中,我想替换列名中的模式。使用gsub:很容易为单个数据帧编写代码

colnames(df) <- gsub("_01", "1", colnames(df))

但是,我没有将此语句包含在for循环中。我尝试了各种类似的组合——得到不同的错误消息:

for (i in import_names_vector) {
colnames(i) <- gsub("_01", "1", colnames(get(i)))
}

我得到的最接近的是以下内容,但这将我的数据帧转换为仅由列名组成的向量:

for (i in import_names_vector) {
assign(i, gsub("_01", "1", colnames(get(i))))
}

不过,模式替换是有效的。我有一种感觉,我很亲近,但我想不通。有什么建议吗?谢谢

尝试使用这个:

result <- lapply(mget(import_names_vector), function(x) 
setNames(x, gsub("_01", "1", colnames(x))))

现在,要在您的单个数据帧中获得这些更改的信息,请使用list2env

list2env(result, .GlobalEnv)

类似于你可以做的尝试:

for (i in import_names_vector) {
assign(i, setNames(get(i), gsub("_01", "1", colnames(get(i)))))
}

最新更新