我使用一个循环来合并几个 CSV 文件。在每个文件中,有一列包含一些信息。问题是在某些文件中,此列称为“IN FILE”,而在其他文件中,它称为“IN.FILE”。或“在文件中*”。我想通过重命名“IN.FILE”中的所有这些列来使事情变得同质
我试着这样做:
if (grepl("IN FILE|IN.FILE.|IN FILE*", first_line)) {
colnames(df)[colnames(df) == "IN FILE"|"IN.FILE."|"IN FILE*"] <- "IN.FILE" }
在这里,我尝试用正确的名称替换所有错误的名称,但 colname 函数不接受多个参数。那么,如何通过 r 中的名称重命名具有不同名称的多个列?
如果这是你的数据
df
IN FILE IN.FILE. IN_FILE col IN FILE
1 1 1 1 1 1 1
2 2 2 2 2 2 2
3 3 3 3 3 3 3
只重命名那些你想通过
grep
colnames(df)[grep("IN.*FILE", colnames(df))] <- "IN.FILE"
df
IN.FILE IN.FILE IN.FILE col IN FILE
1 1 1 1 1 1 1
2 2 2 2 2 2 2
3 3 3 3 3 3 3
但是你有重复的列名。您可以使用
来更正它data.frame(df, check.names = T)
IN.FILE IN.FILE.1 IN.FILE.2 col IN FILE
1 1 1 1 1 1 1
2 2 2 2 2 2 2
3 3 3 3 3 3 3
读取 excel 文件后,您可以使用基本 R 函数“names”重置列的名称
names(df) <- c('column_1', 'column_2', 'column_3')
确保向量(在<- ) includes all the column names of the dataframe (as well as the order of the column names), including those that you don't want to reset the name.
之后