169 похожих чатов

Нашел я тут в purrr::imap интересный косяк. В ... (aka

ellipsis) в imap-окружении передаются мусорные первые 2 аргумента, которые дублируют .x и .y тем самым засирая это многоточие, что мешает мне передавать это многоточие далее в дочерние подфункции.

Я набрался сил и написал об этом в issues пакета.

Делаем ставки - они возьмут и починят, или начнут меня грузить философией?

https://github.com/tidyverse/purrr/issues/1032

2 ответов

15 просмотров
Bogdan-Avramenko Автор вопроса

Довольно простенько evalFormula <- function( .formula, .env ) { checkmate::assertFormula(.formula) checkmate::assertEnvironment(.env) return(.formula |> lazyeval::f_interp() |> lazyeval::f_rhs() |> eval(NULL, .env)) } cycleDummy <- function( .object, .formula, ... ) { purrr::imap( .object, function(.x, .i, ...) {evalFormula(.formula, environment())}, ... ) } cycleDummy( c('sd', 'cxd', 'wtf'), ~{paste(c(.x, .i, 23), ...)}, collapse = '+' )

Bogdan-Avramenko Автор вопроса
Bogdan Avramenko
Довольно простенько evalFormula <- function( ...

Я был неправ!!!11раз-рас Только что вроде научился делать изолированное дочернее окружение на базе нескольких несвязанных между собой ``` evalFormula <- function( .formula, .env ) { checkmate::assertFormula(.formula) checkmate::assertEnvironment(.env) return(.formula |> lazyeval::f_interp() |> lazyeval::f_rhs() |> eval(NULL, .env)) } cycleDummy <- function( .object, .formula, ... ) { env_caller <- rlang::caller_env() env_process_2 <- environment() parent.env(env_process_2) <- env_caller purrr::imap( .object, function(.x, .i, ...) { # https://stackoverflow.com/questions/26057400/r-how-do-you-merge-combine-two-environments env_process <- environment() parent.env(env_process) <- env_process_2 evalFormula(.formula, env_process) }, ... ) } cycleDummy( c('sd', 'cxd', 'wtf'), ~{paste(c(.x, .i, 23), ...)}, collapse = '+' ) ``` Так полученная функция цикла будет работать как с .x, .i, ... так и с переменными из окружения, которое его вызвало, при этом в своем изолированном дочернем окружении (во всяком случае текущие автотесты это подтверждают)

Похожие вопросы

Обсуждают сегодня

type TObj = object procedure Init; virtual; end; TObj1 = object(TObj) procedure Init; override; end; procedure TObj1.Init; begin inherited; end; procedur...
Alexander 👋
29
Есть какой-нибудь для Delphi/FPC T*Compression(Decompression)Stream на базе LZ4/Zstd/любой другой быстрый(и хорошо сжимающий) алгоритм А ещё лучше в pure pascal А ещё лучше од...
notme
45
А чем вам питонисты не угодили?😂
.
79
Можно ли загрузить скрипт py в бота чтобы он работал по нему? как это сделать?
huskadam #RCC Фанат? @hitlerpvp
13
А дин типизация это хорошо или плохо?
Alexey
12
Исходники плюс документация? Вы гоните)) демок хватит всем
zamtmn
11
Язык Си можно выучить за день? По книжке ANSI C на 230 страниц
Vincent Vegan
29
Hello. Could you please help me with finding all coordinates within a radius using a spatial index, given that I have a table with coordinates? SET @lng = 37.57925; SET @lat ...
Rinchin G
7
Всем привет, написал код ниже, но он выдает сегфолт, в чем причина? #include <stdio.h> #include <stdlib.h> #include <string.h> struct product { char *name; float price; };...
buzz базз
76
а что есть "статистика" ? просто подсчет фактов обращения и времен выполнения ?
Сергей
9
Карта сайта