将矢量操作存储为字符变量

时间:2017-07-12 18:24:34

标签: r

我有两列数值数据,我想插入第三列汇总它们。很简单,但我想在做其他事情之前将总和分配给变量(长话短说:这些列名称将一直在变化[下个月它们可能是Col4和{例如{1}},这是其他人将使用的代码,如果我可以将其放在顶部,我不希望这个关键步骤深埋在代码中。这就是我所拥有的:

Col5

显然,它会返回:

sumColumn <- "df$Col1 + df$Col2"
df <- cbind(data.frame("Col1"=2:5, "Col2"=5:8))
df$Col3 <- sumColumn
df

我正在寻找的是:

  Col1 Col2               Col3
1    2    5  df$Col1 + df$Col2
2    3    6  df$Col1 + df$Col2
3    4    7  df$Col1 + df$Col2
4    5    8  df$Col1 + df$Col2

我可以用第三行来强制执行 Col1 Col2 Col3 1 2 5 7 2 3 6 9 3 4 7 11 4 5 8 13 变量,或者某种方式来创建变量,以便按照我想要的方式解释它?谢谢你的帮助!

2 个答案:

答案 0 :(得分:1)

您可以使用df[,"name"]语法通过名称引用列,例如:

df$Col3 <- df[,'Col1'] + df[,'Col2']

因此,如果您在变量n1n2中有列名,则可以执行以下操作:

df$Col3 <- df[,n1] + df[,n2]

在您的计划顶部定义n1 <- 'Col1'n2 <- 'Col2', 如果以后列数名在您的数据框中发生变化, 您可以更改n1n2的值,程序将继续使用新名称。

答案 1 :(得分:1)

你需要

df$Col3 = eval(parse(text=sumColumn))