如何在 R 中的函数中重命名数据框的列?

How to rename a column of a dataframe within a function in R?

我正在尝试在 R 中编写一个函数,但我正在努力研究如何获取函数参数的输入以及如何在函数本身内更改它。

例如:

# Create dataframe
df <- data.frame(1:10, 1:10, 1:10, 1:10)
colnames(df) <- c("var1", "var2", "var3", "var4")

# Create function
myfunction<-function(X, Y, M=c(...), data){
print(X)
print(Y)
print(M)
}

# Test function
myfunction(df$var1, df$var2, c(df$var3, df$var4), df)

现在我想将 X 参数的输入重命名为“X”,将 Y 参数的输入重命名为“Y”,将 M 的输入向量重命名为“M”(第一个元素)和“M2”(第二个元素)。

更具体地说: “var1”应该取名为“X” “var2”应该取名为“Y” “var3”应该取名为“M1” “var4”应该取名为“M2”

我该怎么做?当然,我可以预先重命名数据框本身的列名,但该函数的主要原因是,对于您放入参数的任何数据框和任何列名,这些参数的输入应重新编码为“X”、“Y” ”、“M1”和“M2”。

有什么想法吗?非常感谢!

如果要使用列名,请将它们作为字符串传递。如果将 df$var1 作为函数的输入传递,则无法获得 "var1" 值。您可以使用 [[(和 [)从函数中的列名称中提取数据子集。

myfunction<-function(X, Y, M=c(...), data){
  print(X)
  print(Y)
  print(M)
  val1 <- data[[X]]
  val2 <- data[[Y]]
  val3 <- data[M]
}

# Test function
myfunction("var1", "var2", c("var3", "var4"), df)