Code Monkey home page Code Monkey logo

Comments (2)

MrFlick avatar MrFlick commented on June 12, 2024

I noticed a possibly related problem from this Stack Overflow question. This code results in an error

iris |>
  group_nest(Species) |>
  mutate(boo = map(data, function(x) {
    colsym <- sym("Sepal.Length")
    x %>% mutate(newcol =! !colsym)
  }))
# Error: object 'colsym' not found

Same issue if using .data

iris |>
  group_nest(Species) |>
  mutate(boo = map(data, function(x) {
    colname <- "Sepal.Length"
    x %>% mutate(uncle=.data[[colname]])
  }))

But if you define the function first rather than inline, it will run

helper <- \(x) {
  colsym <- sym("Sepal.Length")
  x %>% mutate(newcol=!!colsym)
}

iris |>
  group_nest(Species) |>
  mutate(data = map(data, helper))

Looking at the trace, it seems the problem is actually coming from rlang::quos. Something else that will trigger the error is

quos(\(x) {bee <- colsym::sym("a"); mutate(x, newcol=!!colsym)})

Basically the !! part is being evaluated when defining the function, not when calling the function. Is there a way to delay the evaluation of the !! or .data[[]] when applied to functions? Tested with rlang_1.1.3, purrr_1.0.2, dplyr_1.1.4

from dplyr.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.