R 如何更改列名并在数据集中创建列的数据框

R 如何更改列名并在数据集中创建列的数据框,r,R,我正在构建一个函数来更改3列的列名,并用3列创建一个新的数据框。文件名是noaaFilename,Date、HrMn和Slp是较早的列名,而我想要的新名称是Date、Time和atmospress names(noaaFilename)[names(noaaFilename) == "Date"] <- "Date" names(noaaFilename)[names(noaaFilename) == "HrMn"] <- "Time" names(noaaFilenam

我正在构建一个函数来更改3列的列名,并用3列创建一个新的数据框。文件名是noaaFilename,Date、HrMn和Slp是较早的列名,而我想要的新名称是Date、Time和atmospress

  names(noaaFilename)[names(noaaFilename) == "Date"] <- "Date"
  names(noaaFilename)[names(noaaFilename) == "HrMn"] <- "Time"
  names(noaaFilename)[names(noaaFilename) == "Slp"] <- "AtmosPressure"

  noaaData <- subset(noaaFilename, select = c(Date, Time, AtmosPressure))

names(noaaFilename)[names(noaaFilename)=“Date”]
noadata
mysubset-Yo可能需要为您的示例提供一些示例数据,以便为其他示例运行。问题应该是可复制的。这意味着任何看到代码的人都应该得到他们所需要的一切。尝试提供几行noaafilename。
noaaData <- subset(noaaFilename, select = c(Date, HrMn, Slp))

names(noaaData) <- c("Date", "Time", "AtmosPressure")
mysubset <- function(df, oldnames, newnames){
  if(length(oldnames)!=length(newnames)){
    stop("oldnames and newnames are not the same length")
  }
  if(!all(oldnames%in%colnames(df)){
    stop("Not all of oldnames match column names of df")
  }
  df <- df[,oldnames, drop = F]
  colnames(df) <- newnames
  return(df)
}
head(iris)
#  Sepal.Length Sepal.Width Petal.Length Petal.Width Species
#1          5.1         3.5          1.4         0.2  setosa
#2          4.9         3.0          1.4         0.2  setosa
#3          4.7         3.2          1.3         0.2  setosa
#4          4.6         3.1          1.5         0.2  setosa
#5          5.0         3.6          1.4         0.2  setosa
#6          5.4         3.9          1.7         0.4  setosa
tmp <- mysubset(iris,
                oldnames = c("Sepal.Length","Sepal.Width","Species"),
                newnames = c("Date","Time","AtmosPressure"))
head(tmp)
#  Date Time AtmosPressure
#1  5.1  3.5        setosa
#2  4.9  3.0        setosa
#3  4.7  3.2        setosa
#4  4.6  3.1        setosa
#5  5.0  3.6        setosa
#6  5.4  3.9        setosa