【问题标题】:How to rename a column of a dataframe within a function in R?如何在R中的函数中重命名数据框的列?
【发布时间】:2021-11-03 11:09:13
【问题描述】:

我正在尝试在 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”。

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

【问题讨论】:

    标签: r dataframe function package columnname


    【解决方案1】:

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

    【讨论】:

    • 这已经是一个进步了,谢谢!我想知道是否有办法在函数中主动更改数据框的列名?例如:我如何在函数中将“var1”的名称更改为“X”,而不是获取 X 参数的输入(此处为:“var1”)?不仅适用于这个特定的数据帧,还适用于函数中使用的任何数据帧?
    • 您的意思是将“var1”的列名更改为“X”吗?也许names(data)[match(X, names(data))] &lt;- 'X' 但我不确定这是否有意义。
    • 这正是我想要的,非常感谢!
    猜你喜欢
    • 2021-04-19
    • 2021-10-08
    • 2019-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-21
    • 2020-05-19
    相关资源
    最近更新 更多