【问题标题】:How to change values of a column if I only know the string variable name of the data frame? [duplicate]如果我只知道数据框的字符串变量名称,如何更改列的值? [复制]
【发布时间】:2018-06-08 03:01:31
【问题描述】:

现在我有一个定义如下的数据框。

df=data.frame(x1=c(1,2,3),x2=c(4,5,6))

而我只有那个data.frame的字符串变量

df.str = 'df'

如何在不使用变量名df 的情况下更改df 的列(例如,将0 分配给df$x1)?只允许df.str,因此你不能写df$x1=0

我尝试了很多方法,但都没有奏效:

df.str$x1=0
df.str[[x1]]=0
df.str[,'x1']=0

【问题讨论】:

  • new_df <- get(df.str); new_df$x1 <- 0
  • @RonakShah - 非常接近,但不确定是否重复,因为这也涉及在引用的 data.frame 中分配变量。
  • @thelatemail 我认为这个问题的主要目的是知道getmget,一旦OP 得到它,用0 替换列值很容易。我可以添加@ 987654321@ 链接到已标记的欺骗。
  • @RonakShah - 当然,这可能会更干净地掩盖它。
  • @ZhenduoCao - `[<-` 本质上只是将df["var"] <- 1 放回函数形式 - `[<-`(df, "var", 1)

标签: r dataframe


【解决方案1】:

我们需要get 来获取值和assign 来分配值

get(df.str)
assign(df.str, `[<-`(get(df.str), "x1",  value = 0))

现在,如果我们检查 'df','x1' 列被分配给 0

df
#  x1 x2
#1  0  4
#2  0  5
#3  0  6

【讨论】:

  • 感谢您的帮助
猜你喜欢
  • 2022-10-13
  • 1970-01-01
  • 1970-01-01
  • 2020-11-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-29
  • 2021-08-10
相关资源
最近更新 更多