R 分配给已评估的对象

1 eval r dataframe assign

我希望能够通过引用对象的名称而不是对象本身来更改数据框的单元格,但是当我尝试这样做时,会导致 warning could not find function "eval<-"

我可以使用下面的代码更改标准数据框的单元格:

my_object = tibble(x = c("Hello", "Goodbye"), 
                   y = c(1,2))

object[2,1] <- "Bye"
Run Code Online (Sandbox Code Playgroud)

但在使用对象的名称时我很难做同样的事情。我可以使用对象的名称来评估该对象并提取相关的单元格:

object_name = "my_object"
eval(sym(object_name))[2, 1]
Run Code Online (Sandbox Code Playgroud)

但我无法为该对象分配新变量(错误could not find function "eval<-":):

eval(sym(object_name))[2, 1] <- "Bye"
Run Code Online (Sandbox Code Playgroud)

All*_*ron 5

您可以使用get()而不是eval(sym())通过名称来获取对象。您还可以使用该[<-函数向其写入值,而无需中间副本:

my_object = dplyr::tibble(x = c("Hello", "Goodbye"), 
                   y = c(1,2))

object_name = "my_object"

`[<-`(get(object_name), 2, 1, value ="Bye")
#> # A tibble: 2 x 2
#>   x         y
#>   <chr> <dbl>
#> 1 Hello     1
#> 2 Bye       2
Run Code Online (Sandbox Code Playgroud)

由reprex 包于 2022 年 6 月 2 日创建(v2.0.1)