R 将函数动态应用于n个不同的对象

R 将函数动态应用于n个不同的对象,r,R,我在R工作 我有n不同的对象,对于j=1,…,n(即df1,df2,df3,…),它们都具有相同的名称结构 对于它们中的每一个,我想应用一个用户定义的函数(假设它的唯一参数是对象本身) 通常,我使用这个: for (i in (1:n)){ assign(paste0("u", 1), function(eval(parse(text = paste0("df",i))))) } 然而,我得到了以下错误: Error in parse(text = p

我在R工作

我有
n
不同的对象,对于j=1,…,n(即
df1
df2
df3
,…),它们都具有相同的名称结构

对于它们中的每一个,我想应用一个用户定义的函数(假设它的唯一参数是对象本身)

通常,我使用这个:

for (i in (1:n)){
 assign(paste0("u", 1), function(eval(parse(text = paste0("df",i)))))
}
然而,我得到了以下错误:

Error in parse(text = paste0("df", j)) : 
  unused argument (text = paste0("df", j))
有人能解决这个问题吗?如果解决方案不涉及我个人认为不实用的
eval(parse(text=paste0(“某物”)))
技巧,我将不胜感激

  • 将具有该名称结构的对象名称放入字符向量中
  • mget
    数据集
  • lappy
    将函数应用于每个数据集
  • 守则是:

    df_names <- ls(pattern = "^df\\d+$")
    u_list <- lapply(mget(df_names), function(DF){
      # do this and that
      DF[["x"]] <- DF[["x"]] + 100
      DF
    })
    u_list
    #$df1
    #    x
    #1 101
    #2 102
    #3 103
    #4 104
    #5 105
    #
    #$df2
    #    x
    #1 111
    #2 112
    #3 113
    #4 114
    #5 115
    
    数据

    df1 <- data.frame(x = 1:5)
    df2 <- data.frame(x = 11:15)
    

    df1您需要发布一些可复制的内容。您发布的内容与您报告的错误不同。我们不需要您完整的用户定义函数,只需要运行它来查看您得到的错误(这没有什么意义,因为
    text
    parse()
    的参数。也许您创建了自己的名为
    parse
    ?)的函数,谢谢!mget函数完成此任务。。。但是,它有一个name属性,即df$1等。。。有没有办法删除这样的名称属性?@Vitomir要删除名称属性,只需执行
    names(u\u列表)
    
    df1 <- data.frame(x = 1:5)
    df2 <- data.frame(x = 11:15)