我正在尝试更改要在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的循环中。
非常感谢你的帮助。它必须是一个我不知道如何使用的命令......
答案 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...}
}