如何在R中重命名函数内的 Dataframe 列?

ojsjcaue  于 2023-03-27  发布在  其他
关注(0)|答案(1)|浏览(206)

我正在尝试用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”(第二个元素)。
更具体地说:“var 1”应获得名称“X”“var 2”应获得名称“Y”“var 3”应获得名称“M1”“var 4”应获得名称“M2”
当然我可以预先重命名数据框本身的列名,但函数的主要原因是,无论您将什么数据框和什么列名放入参数中,这些参数的输入都应该重新编码为“X”,“Y”,“M1”和“M2”。
有什么主意吗?多谢!

qni6mghb

qni6mghb1#

如果要使用列名,请将其作为字符串传递。如果将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)

相关问题