通过自定义函数保留变量名称

时间:2017-06-16 20:02:25

标签: r

我正在使用多个数据框,我想创建一个快速划分数据框中任意两列并在该数据框中命名新列的函数。

到目前为止我的代码:

    relate.ratio = function(x, y, z) {
        q = as.data.frame(y/z)
        x <<- cbind2(x, q)
    }

我的问题是结果保留了x,y和z作为名称,而不是我实际用作我的参数。可能是因为全球转让?但是如果没有全局分配,我无法看到另一种选择。

一个例子:

    relate.ratio(Data, Data$1, Data$2)

将给出一个名为x的数据框和y / z的新列名。所有的数字都是正确的,但名字让我绊倒了。谢谢!

2 个答案:

答案 0 :(得分:0)

您可以在自定义函数中重命名该列:

relate.ratio = function(x, y, z) {
 q = as.data.frame(y/z)
 colnames(q) = "test"
 x <<- cbind2(x, q)
}

答案 1 :(得分:0)

也许这就是你追求的目标?

    relate.ratio = function(x, y, z) {
      q = as.data.frame(y/z)
      x <<- cbind2(x, q)
      names(x) <<- c(deparse(substitute(x)),paste0(deparse(substitute(y)),'/',deparse(substitute(z))))
    }

a <- 1:10
b <- 10:19
c <- 20:29
relate.ratio(a,b,c)
x