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



我有两列数值数据,我想插入第三列来求和它们。很简单,但我想在做任何其他事情之前将求和分配给一个变量(长话短说:这些列名会一直更改 [例如,下个月它们可以Col4Col5],这是其他人将使用的代码,如果我能把它放在顶部,我不希望这个关键步骤深埋在代码中(。这是我得到的:

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

我是否可以对第三行执行强制sumColumn变量,或者以某种方式创建变量,以便以我想要的方式解释它?感谢您的任何帮助!

你需要

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

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

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

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

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

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

最新更新