我想在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="")))
但是,如果表达式太复杂,太长或内部嵌套有其他类似内容,则无法使用此功能。
用途[[]]
:
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)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句