我想基于查找表对数据框中的所有元素应用线性近似。
我可以对一个查找表执行此操作,但我需要一种函数方法(即map
或apply
),以便对写入一个 Dataframe 的多个查找表多次执行此操作。
我有 Dataframe A
,因此
A <- data.frame(cbind(c(2,2,1),c(1,1,2),c(2,1,2)))
以及查找值表Z
Z <- data.frame(cbind(c(1,2),c(0.25,0.5)))
我想将其用作 Dataframe A
中的值的线性插值的基础。
我可以编写一个函数,根据Z
中的值对A
中的值进行插值,即
approximate <- function(x) approx(x=Z[,1], y=Z[,2], xout=x)$y
并将其应用于A
中的所有元素
library(purrr)
as.data.frame(purrr::map(A, approximate))
例如,对于Z
中的多个列,如何执行此操作
Z1 <- data.frame(cbind(c(1,2),c(0.25,0.5),c(0.5,1)))
期望的输出将是两个列表,每个列表包含大小为A
的 Dataframe ,该 Dataframe 对Z1[,-1]
、c(0,25,0.5), c(0.5,1), ...
的每列应用approximate
函数。
1条答案
按热度按时间bcs8qyzn1#
您可以更改
approximate()
函数,使其包含一个参数,用于指定Z1[, -1]
中要用于y
的列。这样,Z1[, -1]
上就有一个外部map()
,A
上就有一个内部map_dfr()
(在此上下文中相当于as.data.frame(map())
)。例如: