使用 R 中的应用函数在 natrices 上逐个元素运行函数

问题描述 投票:0回答:1

我想使用多个基准计算生长度日,使用最低每日温度和最高每日温度。 如果可能的话,我想在没有 for 循环的情况下执行此操作,以最小化我的代码。

bases <- c(40,45,50)
tmin <- runif(10,30,70)
tmax <- runif(10,55,95)

我想找到我有假温度数据的十天中每个基地的生长度天数。 3 个碱基中的每一个应该有 10 个输出值。
我尝试过mapply,如下所示:

gdd_func <- function(tmin,tmax,bases){
   (tmin + tmax)/2 - bases}

test <- mapply(gdd_func,tmin,tmax,bases)

这会产生不正确的输出,老实说我不知道它在做什么。我希望输出等于使用不同的基数运行上述函数 3 次。 每个输出都有 10 个与不同碱基相对应的 gdd 值。 我将如何使用某种应用函数来做到这一点? 或者我还需要更多东西吗?

r apply mapply
1个回答
0
投票

我认为你应该将

tmin
tmax
封装在
list
中,例如,

> mapply(gdd_func, list(tmin), list(tmax), bases)
           [,1]      [,2]      [,3]
 [1,] 19.119648 14.119648  9.119648
 [2,]  6.119249  1.119249 -3.880751
 [3,] 19.523350 14.523350  9.523350
 [4,] 13.023240  8.023240  3.023240
 [5,] 31.083015 26.083015 21.083015
 [6,] 32.281061 27.281061 22.281061
 [7,] 18.062584 13.062584  8.062584
 [8,] 18.047198 13.047198  8.047198
 [9,] 21.518514 16.518514 11.518514
[10,] 28.440563 23.440563 18.440563
© www.soinside.com 2019 - 2024. All rights reserved.