使用近似与向量的每个唯一元素

时间:2015-11-01 19:31:35

标签: r apply

我是R的新手,我喜欢理解使用“apply”-family函数来避免循环和自定义函数的概念。不幸的是,我在第一次练习时失败了。

这是我的最低可重复性示例:

x <- data.frame(Hours=cbind(c(rep(5,5),rep(6,5),rep(7,5),rep(8,5),rep(9,5))),Price=c(cbind(seq(48,50.4, by=0.1),seq(48,52.8, by=0.2),seq(48,55.2, by=0.3),seq(48,57.8, by=0.4),seq(48,60.0, by=0.5))),Volume=seq(10000:10024))
f1 <- approxfun(x$Volume,x$Price, rule=2)
plot(x$Volume, x$Price)
curve(f1, add=TRUE)

但是,我想在approxfun()中的每个唯一小时内执行x$Hour

我该如何处理?

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

此解决方案由bunk提供。

成语是 split / apply / combine :拆分数据,应用函数,合并结果。 R / * plyr / data.table等具有许多功能:

fns <- lapply(split(x, x$Hours), function(dat) approxfun(dat$Volume, dat$Price, rule=2)); plot(x$Volume, x$Price); cols <- 1; for(fn in fns) curve(fn, add=TRUE, col=(cols<<-cols+1))