变量名称作为标记向量中的字符串

时间:2015-06-30 18:10:44

标签: r

我需要在函数中转换数据框变量,并在其中一个函数参数中指定目标变量名:

myfunction = function(varname, df)
{
   transform(varname=log(df[, varname]), df)
}

类似的问题:

var="a"
> d = data.frame(eval(var) = runif(10, 1, 1000))
Error: unexpected '=' in "d = data.frame(eval(var) ="
> d = data.frame(as.name(eval(var)) = runif(10, 1, 1000))
Error: unexpected '=' in "d = data.frame(as.name(eval(var)) ="

如何使transform()有效?

1 个答案:

答案 0 :(得分:3)

您可以在创建data.frame后更改列名称:

var = "a"
d = setNames(data.frame(runif(10, 1, 1000)), var)

在您的情况下,您可以使用以下内容重新分配列:

myfunction = function(varname, df)
{
    df[[varname]] <- log(df[[varname]])
    df
}