将函数应用于数据框列表并将结果写回

时间:2014-07-07 09:19:49

标签: r lapply

我在变量“dfs”中给出了一组数据帧的名称,作为字符串数组。即。

> dfs
"dfs1" "dfs2" ... "dfsk"

我想重命名dfs中每个数据框的列。这意味着我想将函数'func'应用于dfs中的每个条目并将结果写回。即结果应该等于评估

dfs1 <- func(dfs1)
dfs2 <- func(dfs2)
...
dfsk <- func(dfsk)

困难在于,dfs可能是任意长的,dfs的内容只在运行时才知道。

我尝试编写函数func并使用:

将其应用于dfs
lapply( mget(dfs), func)

但是这会使实际的data.frames保持不变。

我的问题与以下未答复的问题有相似之处:

Apply an already defined function to all dataframes at once

1 个答案:

答案 0 :(得分:0)

找到解决方案:关键是使用eval而不是apply。可以使用以下方法获得所需的行为:

cCmd  <- paste(dfs, "<- func(" ,dfs,")", sep="")
eCmd  <- parse(text=cCmd)
eval(eCmd)

这可能不是最优雅的方式,但它有效。