如何在R中使用字符串操作更改要调用的变量的名称?

时间:2015-01-30 05:09:05

标签: regex r gsub

我正在尝试更改要在r中动态调用的变量的名称。

例如,dataframe trades_long_final有很多列" prob_choice1"和" prob_choice2",..." prob_choiceN"和" col1"," col2",..." colN"。

我想动态更改每个值。

例如,

trades_long_final$"prob_choice1"[1] = 10 and 
trades_long_final$"prob_choice2"[1] = 10 

作品

但不是

trades_long_final$gsub("1","2","prob_choice1")[1] = 10 

作为一种方法来调用trades_long_final $" prob_choice2" [1]将prob_choice1中的1替换成2,因为我收到了错误

Error: attempt to apply non-function

我需要这个才能工作,因为我需要使用诸如trades_long_final $ gsub(" i"," 2"," prob_choicei")之类的内容循环遍历列。 [1]在所有i的循环中。

非常感谢你的帮助。它必须是一个我不知道如何使用的命令......

2 个答案:

答案 0 :(得分:3)

您可以使用$更改变量名称并将值分配到一行,而不是使用[

 trades_long_final[,gsub("1","2","prob_choice1")][1] <- 10 

但是,目前尚不清楚为什么需要这样做。简单

 trades_long_final[1, "prob_choice2"] <- 10

会更容易。根据描述,“prob_choice2”已经是数据集中的一列。所以,这很令人困惑。

数据

set.seed(24)
trades_long_final <- data.frame(prob_choice1 =runif(10), 
    prob_choice2=rnorm(10), col1=rnorm(10,10), col2=rnorm(10,30))

答案 1 :(得分:0)

正如akrun所说,做到这一点的方法是使用[以便我这样做的方式是:

for (k in 1:numtrades){

        trades_long_final[[paste("prob_choice", k, sep="")]] = 
    {some complex procedure...}

}