R 将向量运算存储为字符变量

R 将向量运算存储为字符变量,r,R,我有两列数值数据,我想插入第三列求和。很简单,但我想在做任何长话短说的事情之前将求和赋值给一个变量:这些列名将一直更改(例如,下个月它们可能是col4和Col5),这是其他人将使用的代码,如果我可以将其放在顶部,我不希望这一关键步骤深深地埋藏在代码中。以下是我得到的: sumColumn <- "df$Col1 + df$Col2" df <- cbind(data.frame("Col1"=2:5, "Col2"=5:8)) df$Col3 <- sumColumn df

我有两列数值数据,我想插入第三列求和。很简单,但我想在做任何长话短说的事情之前将求和赋值给一个变量:这些列名将一直更改(例如,下个月它们可能是col4和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    7
2    3    6    9
3    4    7   11
4    5    8   13

我能用第三行做些什么来强制sumColumn变量,或者用某种方法来创建变量,以便按照我想要的方式解释它吗?谢谢你的帮助

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

df$Col3 <- df[,'Col1'] + df[,'Col2']
使用n1您需要

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

这是个坏习惯。OP不应存储字符串,但表达式bquote可能对OP有用。然后可以对该表达式求值。@罗兰,你能提供一个参考,说明不存储字符串的原因吗?在《财富》软件包中的引号集合中有一个条目。主要的问题是这样的结构速度慢,难以阅读和理解,难以维护这样的代码,如果出现错误会给出模糊的错误消息,并且阻碍了你作为R程序员的成长。R支持存储和计算表达式,通过这些表达式,您可以在该语言上进行计算。顺便说一句,解释了evalpasse构造可以降低字节码编译的速度,而字节码编译现在是默认启用的。@Roland,谢谢。这很有帮助。最好将两个变量的名称存储在一个字符向量中。麦考尔的后续行动很晚,但效果很好。谢谢
df$Col3 <- df[,n1] + df[,n2]
df$Col3 = eval(parse(text=sumColumn))