我需要在函数中转换数据框变量,并在其中一个函数参数中指定目标变量名:
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()有效?
答案 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
}