【问题标题】:Creating a "list" of dataframes that can be passed to a function创建可以传递给函数的数据帧“列表”
【发布时间】:2015-01-29 17:02:04
【问题描述】:

我想将一个函数应用于多个数据帧。 该问题已在 Stackoverflow 上多次回答,例如Apply a function to each data frameapplying a function for a list of dataframes。 但是,在创建可以将数据帧传递给函数的数据帧列表时,我遇到了一个稍微不同的(初学者)问题。

我创建了一个函数

drawmyplot <- function(x){
variable <-x
aggregate(variable$c1, by=list(variable$c2, variable$c3), FUN=sum)
....
}

我用for循环调用函数

for (i in list_of_dataframes){
drawplot(i)
}

我有一个数据框列表

list_of_dataframes<-list("df_1","df_2")

当我运行脚本时,我得到了错误

Error in variable$c1 : $ operator is invalid for atomic vectors

据我了解,我创建了一个包含一个向量的列表,并且我没有将任何数据帧传递给该函数。 在这种情况下,如何将函数应用于多个数据帧 df_1、df_2、df_3、..、df_n 的每个数据集?

【问题讨论】:

    标签: r


    【解决方案1】:

    看起来你有一个字符串列表:

    list_of_dataframes<-list("df_1","df_2")
    

    如果您想要数据框列表,请使用

    list_of_dataframes<-list(df_1,df_2)
    

    【讨论】:

    • 谢谢,这是造成警告的原因。我之前也尝试过你的建议,当我运行脚本时,我没有收到错误 - 但函数运行时没有任何反应。当我直接调用函数drawmyplot(df_1) 时,函数完全按照它应该做的事情。你有什么想法吗?
    • 我会在函数 drawmyplot 中放置一个打印语句,看看发生了什么。如果您从循环中调用您的函数,当您单独调用每个数据帧时,您应该会看到它打印出相同的内容。
    猜你喜欢
    • 1970-01-01
    • 2020-01-01
    • 2023-03-12
    • 1970-01-01
    • 1970-01-01
    • 2020-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多