【发布时间】:2021-08-27 12:04:01
【问题描述】:
我想在数据框中的所有列上迭代一个函数,每列的函数具有不同的参数。 我正在尝试通过嵌套的 lapply 来做到这一点。
结果不是我所期望的,我希望将值从第一个 lapply 传递到第二个,但如下面的结果所示,第二个 lapply 打印“var”而不用“var1”等替换.
我应该如何解决它?
# sample data frame
df <- data.frame(date = seq.Date(from = as.Date("2021-01-01"), by = "day", length.out = 100),
var1 = rnorm(100),
var2 = rnorm(100),
var3 = rnorm(100))
# list 1
var.list <- setdiff(names(df),"date")
# list 2
pen.list <- c("mean(df[[var]])", "log(mean(df[[var]]))", "log(mean(df[[var]]))^2", "mean(df[[var]])^2/2")
lapply(var.list, function(var){
lapply(pen.list, function(pen){
print(var)
print(pen)
plot(cpt.mean(df[[var]],penalty = "Manual", method = "PELT", pen.value = noquote(pen)))
})
})
#Result
[1] "var1"
[1] "mean(df[[var]])"
[1] "var1"
[1] "log(mean(df[[var]]))"
[1] "var1"
[1] "log(mean(df[[var]]))^2"
[1] "var1"
[1] "mean(df[[var]])^2/2"
[1] "var2"
[1] "mean(df[[var]])"
[1] "var2"
[1] "log(mean(df[[var]]))"
[1] "var2"
[1] "log(mean(df[[var]]))^2"
[1] "var2"
[1] "mean(df[[var]])^2/2"
[1] "var3"
[1] "mean(df[[var]])"
[1] "var3"
[1] "log(mean(df[[var]]))"
[1] "var3"
[1] "log(mean(df[[var]]))^2"
[1] "var3"
[1] "mean(df[[var]])^2/2"
【问题讨论】:
-
例子中
df_today是什么