用变量

时间:2015-04-25 12:36:35

标签: r

我想在 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="")))

但如果表达式太复杂,太长,或者其他内容嵌套在其中,则无法使用。

1 个答案:

答案 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)