gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 01:38:08 25 4
gpt4 key购买 nike

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

关于用变量中的值替换表达式的一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29865237/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com