[英]'apply' on two different data frames at once in R
我想知道是否有辦法使用 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) 進行評估
最后,我想收集 example(collect) 中的向量,一個由三個 df_model$DY 和三列的行數組成的矩陣,其中包含在 DY 日針對 df_model 對 df_data 的評估。
[,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 函數系列,但我感到困惑,因為我評估了兩個不同的數據幀。 任何幫助/指針將不勝感激!
我們可以使用mapply
或Map
mapply(function(x, y) dnorm(df_data$CC[df_data$DY == x], y,
log = TRUE), df_model$DY, df_model$CC)
-輸出
# [,1] [,2] [,3]
#[1,] -1.5031401 -2.7449464 -1.734319
#[2,] -0.9237629 -0.9243094 -1.115875
#[3,] -4.9848319 -1.1494313 -1.187122
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.