定义包含for循环的函数

时间:2018-03-22 17:45:52

标签: r

我有2个数据框。

一个(df1)有斜率和截距的列,另一个(df2)有一个索引列(即行号)。

我希望将基于df1参数的函数应用到df2中的整个索引列。我不希望函数混合和匹配斜率和截距(即,我想确保函数始终使用斜率和df1中相同列的截距)。

我试图这样做

<Resources>
   <Resource Language="EN-US" />
   <Resource Language="JA-JP" />
   <Resource Language="FR-FR" />
</Resources>

但它不起作用。

以下是示例数据:

my_function <- function(x) {for (i in df1$slope) for (j in df1$intercept) {((i*x)+j)}}

df3 <- for (k in df2$Index) {my_function(k)}

df3

这是我需要的输出:

> df1
  thermocouple slope intercept
1            1  0.01       0.5
2            2 -0.01       0.4
3            3  0.03       0.2
> df2
  index    t_1    t_2    t_3
1     1    0.3    0.2    0.2
2     2    0.5    0.2    0.3
3     3    0.3    0.9    0.1
4     4    1.2    1.8    0.4
5     5    2.3    3.1    1.2

我做错了什么?

谢谢!

1 个答案:

答案 0 :(得分:1)

试试这个:

通过将三个带有值的参数同时传递给Map中定义的匿名函数。

Map( function(index, slope, intercept) (index * slope ) + intercept,
     index = df2$Index, slope = df1$slope, intercept = df1$intercept)

可能是这样的:我不确定你喜欢哪一个,因为问题中没有数据和预期输出。

lapply( df2$index, function(index){
  unlist( Map( function(slope, intercept) (index * slope ) + intercept,
               slope = df1$slope, intercept = df1$intercept) )
})