如果我有一个清单
sample <- list(a = c(1:5), b = c(11:15))
我想写一个类似下面的函数
res <- lapply(sample, function(x) { sample$a + sample$b * 5})
,结果只是
[1] 56 62 68 74 80
我知道这可以通过简单的sample$a + sample$b*5
来实现,但是我有一些不属于它的复杂计算。
答案 0 :(得分:2)
您可以使用mapply(function(x,y) x+y*5, sample$a, sample$b)
header('http://****/calendar.php:'.$url);
答案 1 :(得分:2)
使用do.call
do.call(function(a,b) a + b*5, sample)
[1] 56 62 68 74 80
答案 2 :(得分:1)
我们可以转换为data.table
并执行此操作
library(data.table)
setDT(sample)[, a+b*5]
#[1] 56 62 68 74 80
答案 3 :(得分:0)
mapply()
和do.call()
肯定会有效。但是,根据您的上下文,data.frame
可能是更好的数据结构。
使用 dplyr
library(dplyr)
as.data.frame(sample) %>%
mutate(result = a + b * 5)
或使用基本功能:
d <- as.data.frame(sample)
transform(d, result = a + b * 5)