【发布时间】:2020-10-30 17:17:45
【问题描述】:
我想知道是否有办法使用 apply-family 函数一次评估两个不同的数据帧?或者有没有更好的方法来解决这个问题?我只能想到一个循环,太慢了:
# example data
df_model <- data.frame(DY = c(93,100,107), CC=rnorm(1:3, mean = 0.1))
df_data <- data.frame(DY = rep(c(93,100,107),each = 3), CC = c(rnorm(1:3),rnorm(1:3),rnorm(1:3)))
在这个例子中,我想有一个三个元素的向量作为输出,处理如下(这里是第一种情况)
#example procedure case 1
collect <- matrix(0,ncol=3,nrow=3)
collect[1,] <- dnorm( df_data[which(df_data$DY == df_model$DY[1]),]$CC, df_model[1,]$CC, log=TRUE )
作为输入,我设想
df_data 中 CC 的列表/向量,按相应的日期 DY (0.07624536 1.32623789 0.92921693) 进行子集化
在相应的一天 DY 对 df_model 的一个值 (0.00049671) 进行评估
最后我想收集示例中的向量(收集)一个由三个 df_model$DY 和三列的行数组成的矩阵,其中包含 df_data 在第 DY 日对 df_model 的评估。
[,1] [,2] [,3]
[1,] -0.9218075 -1.7977334 -1.3501992
[2,] -0.9356356 -0.9850012 -1.1753341
[3,] -1.2152926 -0.9195071 -2.4127840
这需要尽可能高效地完成。 我可以在一个循环中完成它(在上面你看到循环的第一个案例),但我相信有更好的方法。 我查看了 apply 函数系列,但我感到困惑,因为我有两个不同的数据框要评估。任何帮助/指针将不胜感激!
【问题讨论】:
标签: r