如何使用 *pply 函数将数据帧和向量映射到函数参数

how to map a dataframe and vectors into function parameters with *pply functions

我遇到的问题是针对*pply的具体操作(比如apply或者mapply等,我不确定)。

数据框是dlt:

        dlt.1    dlt.2    dlt.3    dlt.4    dlt.5  
  1  3.244198 6.482869 9.711874 12.92918 16.13489
  6  3.196401 6.391871 9.585553 12.77681 15.96547
 19  3.182911 6.365424 9.547196 12.72799 15.90795
 24  3.164079 6.328089 9.491971 12.65577 15.81984

向量是freq:

 1 2 3 4 5

现在我打算将 dtfreqn 映射到函数 foo:

foo <- function( dlti, freqi){ dlti * freqi }

我希望 dlt 的第 i 列对应于 freq

的第 i 个元素

我尝试了 applymapply,但都失败了。谁能告诉我什么是正确的方法?

这不是您想要的确切答案,但它指明了方向。 实际上,从你的问题中并不清楚你真正想要什么,因为你没有显示出想要的结果。您还应该包含创建 data.frame 的代码。否则,您的问题就会含糊不清。所以不要对我的答案投反对票,因为它没有回答你的问题。

    dlt <- tribble(
       ~dlt_1,    ~dlt_2,   ~dlt_3,    ~dlt_4,    ~dlt_5  ,
    3.244198, 6.482869, 9.711874, 12.92918, 16.13489,
    3.196401, 6.391871, 9.585553, 12.77681, 15.96547,
   3.182911, 6.365424, 9.547196, 12.72799, 15.90795,
   3.164079, 6.328089, 9.491971, 12.65577, 15.81984 
)
freqi <- c(1,2,3,4,5)
foo <- function(dlti,freqi){dlti * freqi}
purrr::map2(dlt,freqi,foo)

$dlt_1
[1] 3.244198 3.196401 3.182911 3.164079

$dlt_2
[1] 12.96574 12.78374 12.73085 12.65618

$dlt_3
[1] 29.13562 28.75666 28.64159 28.47591

$dlt_4
[1] 51.71672 51.10724 50.91196 50.62308

$dlt_5
[1] 80.67445 79.82735 79.53975 79.09920

base R中,我们可以通过复制'freq'然后执行*

来做到这一点
dlt*freq[col(dlt)]
#     dlt.1    dlt.2    dlt.3    dlt.4    dlt.5
#1  3.244198 12.96574 29.13562 51.71672 80.67445
#6  3.196401 12.78374 28.75666 51.10724 79.82735
#19 3.182911 12.73085 28.64159 50.91196 79.53975
#24 3.164079 12.65618 28.47591 50.62308 79.09920

或在base R

中使用Map
dlt[] <-  Map(`*`, dlt, freq)