gpt4 book ai didi

r - dplyr 编程 : how to access columns of . x 在 map 中

转载 作者:行者123 更新时间:2023-12-04 12:18:19 25 4
gpt4 key购买 nike

嵌套一个数据框并将每个 tibble 转换为一个 xts 经常发生,足以配得上它自己的功能。

输入数据帧应该由 nest_var 嵌套,然后每个嵌套的数据帧应该转换为 xts 对象 order.by t_var

这是我的尝试,

library(tidyverse)
library(purrr)
library(magrittr)
library(xts)
data("sample_matrix")
df <- sample_matrix %>%
as.data.frame() %>%
rownames_to_column(var='dt') %>%
gather(key=ohlc, value=val, -dt)

nest_xts <- function(df_in, nest_var, t_var) {
require(rlang)
nest_var <- enquo(nest_var)
t_var <- enquo(t_var)

df_in %>% group_by(!!nest_var) %>%
nest() %>%
mutate(data := map(data, ~xts(.x, order.by=.x[quo_name(t_var)])))
}
nest_xts(df, ohlc, dt)

但这不是在最后一行访问 mutate, map 组合中 .x 的列。
Error in mutate_impl(.data, dots) : 
Evaluation error: order.by requires an appropriate time-based object.

还尝试将最后一行更改为
mutate(data := map(data, ~xts(.x, order.by=.x$!!t_var)))

但该函数无法编译;
Error: unexpected '!' in:
" nest() %>%
mutate(data := map(data, ~xts(.x, order.by=.x$!"
> }
Error: unexpected '}' in "}"

最佳答案

你实现了访问列。但是tbl_df[colname]不是 vector但是 tbl_df .

order.by = .x[quo_name(t_var)][[1]]
# or
order.by = pull(.x, quo_name(t_var))

# and (carelessly?)
df <- df %>% mutate(dt = as.Date(dt))

给你想要的。

关于r - dplyr 编程 : how to access columns of . x 在 map 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48232638/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com