用变量的值替换表达式的一部分

斯波多萨

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

但是,如果表达式太复杂,太长或内部嵌套有其他类似内容,则无法使用此功能。

贾斯汀·弗莱彻(Justin Fletcher)

用途[[]]

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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

用sed替换匹配的正则表达式的一部分

用正则表达式动态替换条件块的一部分

用匹配的正则表达式的一部分替换字符串

用 sed 或任何其他工具替换匹配的正则表达式的一部分

使用正则表达式替换字符串的一部分

如何捕获String表达式并仅替换其中一部分?

如何仅替换以下正则表达式(JavaScript)的一部分?

替换前处理正则表达式匹配的一部分

替换正则表达式的一部分

正则表达式 - 可以替换匹配组的一部分吗?

在C#中将表达式的一部分定义为变量

用正则表达式屏蔽字符串的一部分

用正则表达式匹配文件路径的一部分

使用正则表达式获取匹配值的一部分

VSCode查找和替换-查找实例,其中搜索表达式的一部分与条件匹配,而一部分与条件不匹配

正则表达式删除字符串的一部分,然后替换另一部分

如何通过正则表达式用保存部分模式替换字符串的一部分?

Perl字符串替换:匹配但不替换正则表达式的一部分

评估Lambda表达式作为表达式树的一部分

如何用相应方程式的左侧部分替换表达式的一部分?

使用正则表达式搜索,但仅用 sed 替换字符串的一部分

在Javascript中使用正则表达式替换html字符串的一部分

正则表达式在Visual Studio中替换src属性的一部分

正则表达式,总是在末尾替换字符串的一部分

跳过字符串的一部分,并用正则表达式替换匹配项

PHP查找并用正则表达式替换字符串的一部分

正则表达式匹配模式但只替换 R 中匹配的一部分

kate-正则表达式-查找并将URL的一部分从href替换为“>

Python正则表达式:如果字母不是列表中单词的一部分,则替换字母