>>>>> peter dalgaard >>>>> on Tue, 10 Aug 2021 22:00:16 +0200 writes:
> It's not a pipe issue: >> textConnection(gsub(gsub(L, pattern = " ", replacement = ""), pattern = " ", replacement = "")) > Error in textConnection(gsub(gsub(L, pattern = " ", replacement = ""), : > argument 'object' must deparse to a single character string >> textConnection(gsub(L, pattern = " ", replacement = "")) > A connection with > description "gsub(L, pattern = \" \", replacement = \"\")" > class "textConnection" > mode "r" > text "text" > opened "opened" > can read "yes" > can write "no" > I suppose the culprit is that the deparse(substitute(...)) construct in the definition of textConnection() can generate multiple lines if the object expression gets complicated. >> textConnection > function (object, open = "r", local = FALSE, name = deparse(substitute(object)), > encoding = c("", "bytes", "UTF-8")) > This also suggests that setting name=something might be a cure. > -pd Indeed. In R 4.0.0, I had introduced the deparse1() short cut to be used in place of deparse() in such cases: NEWS has said • New function deparse1() produces one string, wrapping deparse(), to be used typically in deparse1(substitute(*)), e.g., to fix PR#17671. and the definition is a simple but useful oneliner deparse1 <- function (expr, collapse = " ", width.cutoff = 500L, ...) paste(deparse(expr, width.cutoff, ...), collapse = collapse) So I'm almost sure we should use deparse1() in textConnection (and will make check and potentially commit that unless ...) Martin >> On 10 Aug 2021, at 21:33 , Gabor Grothendieck <ggrothendi...@gmail.com> wrote: >> >> This gives an error bit if the first gsub line is commented out then there is no >> error even though it is equivalent code. >> >> L <- c("Variable:id", "Length:112630 ") >> >> L |> >> gsub(pattern = " ", replacement = "") |> >> gsub(pattern = " ", replacement = "") |> >> textConnection() |> >> read.dcf() >> ## Error in textConnection(gsub(gsub(L, pattern = " ", replacement = ""), : >> ## argument 'object' must deparse to a single character string >> >> That is this works: >> >> L |> >> # gsub(pattern = " ", replacement = "") |> >> gsub(pattern = " ", replacement = "") |> >> textConnection() |> >> read.dcf() >> ## Variable Length >> ## [1,] "id" "112630" >> >> R.version.string >> ## [1] "R version 4.1.0 RC (2021-05-16 r80303)" >> win.version() >> ## [1] "Windows 10 x64 (build 19042)" >> >> -- >> Statistics & Software Consulting >> GKX Group, GKX Associates Inc. >> tel: 1-877-GKX-GROUP >> email: ggrothendieck at gmail.com >> >> ______________________________________________ >> R-devel@r-project.org mailing list >> https://stat.ethz.ch/mailman/listinfo/r-devel > -- > Peter Dalgaard, Professor, > Center for Statistics, Copenhagen Business School > Solbjerg Plads 3, 2000 Frederiksberg, Denmark > Phone: (+45)38153501 > Office: A 4.23 > Email: pd....@cbs.dk Priv: pda...@gmail.com > ______________________________________________ > R-devel@r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-devel ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel