[R] Delete an object which is named indirectly.
Rui Barradas
ru|pb@rr@d@@ @end|ng |rom @@po@pt
Sat Jul 26 09:39:44 CEST 2025
Hello,
Good point, rm should be reserved for interactive use only.
I didn't thought of lists but if the OP wants to delete junk.A it should be
dta <- list(junk.A = -9999, junk.B = "junk.A")
dta[dta[["junk.B"]]] <- NULL
dta
#> $junk.B
#> [1] "junk.A"
Hope this helps,
Rui Barradas
Às 08:21 de 26/07/2025, Jeff Newmiller via R-help escreveu:
> Don't take this the wrong way, but if you are writing code that behaves like this then you are doing no-one any favors.
>
> Just stop messing with variables and start learning how to work with lists.
>
> dta <- list(junk.A = -9999, junk.B="junk.B")
> dta[dta[["junk.B"]]] <- NULL
> dta
>
>
> On July 25, 2025 1:26:23 PM PDT, ressw--- via R-help <r-help using r-project.org> wrote:
>> Make two objects
>>
>> junk.A = -9999
>> junk.B = "junk.A"
>>
>> rm(junk.B) removes junk.B and not junk.A, as it should.
>>
>> Is there a function, e,g, "rm2", such that
>> rm2(junk.B) will delete junk.A and not junk.B?
>>
>> Why doesn't this work?:
>>> rm(eval(junk.B))
>> Error in rm(eval(junk.B)) : ... must contain names or character strings
>> since eval(junk.B) yields "junk.A"
>> and
>>> rm("junk.A")
>> does work?
>>
>> R version 4.3.0 (2023-04-21)
>>
>> ______________________________________________
>> R-help using r-project.org mailing list -- To UNSUBSCRIBE and more, see
>> https://stat.ethz.ch/mailman/listinfo/r-help
>> PLEASE do read the posting guide https://www.R-project.org/posting-guide.html
>> and provide commented, minimal, self-contained, reproducible code.
>
More information about the R-help
mailing list