【问题标题】:Passing multiple arguments to lapply from a dataframe从数据框中传递多个参数到 lapply
【发布时间】:2020-08-12 04:58:13
【问题描述】:

我正在尝试使用 R 中的“应用”函数将函数应用于 2 个参数的所有组合,但我遇到了一些错误。

这是我正在做的事情的细分:

我有 2 个参数列表如下:

list1 <- c('a','b','c')
list2 <- c('x','y','z')

我需要将这两个列表的所有可能组合传递给一个函数,因此我创建了一个数据框,如下所示:

combined<-expand.grid(list1 = list1, list2 = list2)

组合的数据框现在包含 9 行数据,其中包含这 2 个列表的所有可能组合。

现在,我有一个函数 my_func(),它接受 2 个参数,例如my_func('a','x') 并生成一些输出。

我想将此函数应用于上面创建的组合数据框的所有这 9 行,所以我使用如下应用函数:

apply(x,resp_rate)

运行此代码会产生以下错误。

match.fun(FUN) 中的错误:缺少参数“FUN”,没有默认值

如果有人能告诉我我做错了什么,我将不胜感激。

【问题讨论】:

    标签: r


    【解决方案1】:

    在第二个参数中使用apply,您需要传递MARGIN,以指定您是要按行(1)还是按列(2)应用函数。此外,您还需要在此处使用匿名函数,因为您的函数接受两个单独的参数。

    apply(combined, 1, function(x) my_func(x[1], x[2]))
    

    【讨论】:

    • 非常感谢罗纳克。这完全符合我的要求。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-24
    • 2017-08-07
    • 2012-02-12
    相关资源
    最近更新 更多