【问题标题】:r Reference variable by string then change that variabler 按字符串引用变量,然后更改该变量
【发布时间】:2024-01-23 17:55:01
【问题描述】:

所以,基本上,我正在编写一个 for 函数,它不是在说 1:5 中进行替换,而是在作为变量名称的字符串中进行替换。但我也希望能够改变变量本身,在我的例子中是数据框。 基本上我想要的是:

x = c("item")
item = data.frame(c(1,1,1,1))

然后通过仅使用 x 或“item”,我想实际更改 item 中的值,例如将第二个 1 更改为 5。

所以,到目前为止,在通过字符串引用变量的部门中,我能做的最好的事情是:

eval(parse(text = x))

这只会给我项目中的数据。我实际上想更改项目本身内部的数据并让它保持更改。

【问题讨论】:

  • 欢迎来到 SO!我认为你正在重新发明*。 tidyverse 包基本上已经为您完成了这项工作。例如df <- df %>% mutate(X=ifelse(Row_number() == 2, 5, X)会将df第二行中X的值更改为5,其他值保持不变。
  • 改变你的方法。这只是不好的做法,对你来说会很麻烦。

标签: r string variables replace


【解决方案1】:

您可以使用get 从字符串值transform 中获取数据框来更改值。

item = data.frame(col = c(1,1,1,1))
x = "item"
res <- transform(get(x), col = replace(col, 2, 5))
res

#  col
#1   1
#2   5
#3   1
#4   1

如果您想保持与原始数据框相同的名称,可以使用assign

assign(x, transform(get(x), col = replace(col, 2, 5)))

【讨论】:

    最近更新 更多