优化R链(magrittr)
我想通过管道(链)将magrittr对象放入循环中。我该怎么做?优化R链(magrittr),r,data.table,dplyr,magrittr,R,Data.table,Dplyr,Magrittr,我想通过管道(链)将magrittr对象放入循环中。我该怎么做? 我将使用虚拟操作/数据作为示例: library(data.table) library(magrittr) # Dummy data modification d <- mtcars %>% setDT() %>% .[, cylSQ := sqrt(cyl)] %>% .[, carb3 := carb^3] # Dummy loop res <- list() for(
我将使用虚拟操作/数据作为示例:
library(data.table)
library(magrittr)
# Dummy data modification
d <- mtcars %>%
setDT() %>%
.[, cylSQ := sqrt(cyl)] %>%
.[, carb3 := carb^3]
# Dummy loop
res <- list()
for(i in unique(d$gear)) {
res[[i]] <- d[gear == i] %>%
.[, lm(cylSQ ~ mpg + carb3 * wt)] %>%
.$fitted.values
}
编辑:我不想用
数据替换循环。表
或dplyr
,只是好奇管道 这是一个粗略的解决方法,但是您可以在magrittr
包%$%
中使用exposition操作符
即:
这是一个粗略的解决方法,但是您可以在
magrittr
包%%$%
中使用exposition操作符
即:
我不是magrittr的从业者,所以它可能会得到改进,但至少是有效的,应该是高效的
as.data.table(mtcars
)[, cylSQ := sqrt(cyl)
][, carb3 := carb^3
][, lm(cylSQ ~ mpg + carb3 * wt)$fitted.values, by=gear
] %>%
split(by = "gear", keep.by = FALSE) %>%
lapply(unlist) %>%
lapply(unname) -> res
由于新的
split.data.table
它需要1.9.7中的data.table,有关如何在各种平台上安装的详细信息,请参阅。我不是magrittr的从业者,因此它可能会得到改进,但至少是有效的
as.data.table(mtcars
)[, cylSQ := sqrt(cyl)
][, carb3 := carb^3
][, lm(cylSQ ~ mpg + carb3 * wt)$fitted.values, by=gear
] %>%
split(by = "gear", keep.by = FALSE) %>%
lapply(unlist) %>%
lapply(unname) -> res
由于新的
split.data.table
需要1.9.7中的data.table,有关如何在各种平台上安装的详细信息,请参阅。您是否介意在此处使用dplyr
而不是data.table
?如果没有,请尝试以下操作:
library(dplyr)
d <- mtcars %>%
mutate(cylSQ = sqrt(cyl), carb3 = carb^3) %>%
group_by(gear) %>%
do(fitted.values = lm(cylSQ ~ mpg + carb3 * wt, data = .)[["fitted.values"]])
库(dplyr)
d%
突变(cylSQ=sqrt(cyl),carb3=carb^3)%>%
分组依据(档位)%>%
do(fitted.values=lm(cysq~mpg+carb3*wt,数据=)[[“fitted.values”]]
您不介意使用dplyr
而不是数据。这里是表
?如果没有,请尝试以下操作:
library(dplyr)
d <- mtcars %>%
mutate(cylSQ = sqrt(cyl), carb3 = carb^3) %>%
group_by(gear) %>%
do(fitted.values = lm(cylSQ ~ mpg + carb3 * wt, data = .)[["fitted.values"]])
库(dplyr)
d%
突变(cylSQ=sqrt(cyl),carb3=carb^3)%>%
分组依据(档位)%>%
do(fitted.values=lm(cysq~mpg+carb3*wt,数据=)[[“fitted.values”]]
我可能错了,这不是出现purr
包的原因吗?@zx8754我以前没听说过,不知道这是我要找的,但它看起来很好,值得一看。谢谢你的建议mtcars%%>%setDT
违反了dplyr语法/不修改输入的原则,仅供参考。@Frank不%%>%
复制吗?我试过setDT(mtcars)
,它会像预期的那样抛出错误。我可能错了,这不是出现purrr
包的原因吗?@zx8754我以前没有听说过,不知道它是我要找的,但它看起来很好,值得一看。谢谢你的建议mtcars%%>%setDT
违反了dplyr语法/不修改输入的原则,仅供参考。@Frank不%%>%
复制吗?我尝试了setDT(mtcars)
,它抛出了错误,正如预期的那样。看起来非常好。看起来非常好。