我想在 R 中写一个表达式,我可以根据其他变量修改它的某些部分。例如,让我们说我想使用以下基本表达式在我的数据框中创建许多新列:
MyDataFrame$ColumnNumber1 <- 33
如果我想创建很多这些,我可以直接输入
MyDataFrame$ColumnNumber2 <- 52
MyDataFrame$ColumnNumber3 <- 12
...
等等。但是,如果我有很多这样的话,这将是不切实际的。因此,我想用某种方法用一些通过变量生成的东西替换表达式的一部分。例如,让我们说有一个运营商Input()
可以做到这一点。然后我可以写一个看起来像这样的函数:
for(i in 1:1000)
{
MyDataFrame$ColumnNumberInput(i) <- 32*i
}
其中Input(i)
部分将替换为计数器当前所处的数字,这反过来会生成表达式。
我现在可以通过使用:
来完成此操作eval(parse(text=paste("MyDataFrame$","Column","Number","1","<- 32*i",sep="")))
但如果表达式太复杂,太长,或者其他内容嵌套在其中,则无法使用。
答案 0 :(得分:2)
使用[[]]
:
for(i in 1:1000)
{
MyDataFrame[[i]] <- 32*i
}
[[]]
是$
的程序化等效内容。
然后,您可以将数据结构引用为:
MyDataFrame[[14]] <- MyDataObjFourteen
MyDataFrame$14
MyDataFrame[[14]]
您也可以使用字符串,如下所示:
MyDataFrame[["SomeString"]] <- 32
MyDataFrame$SomeString
# 32
编辑1:
要做一些类似的事情,请以更一般的方式尝试:
assign("someArbitraryString", 3)
someArbitraryString
# 3
as.name(someArbitraryString)