从循环中的变量名称中提取列数据

时间:2017-08-04 09:21:17

标签: r

我在电子表格中有一系列变量,其名称由多个规则组成。为简单起见,我创建了一个测试表来尝试迭代变量名的方法。

target =c("data_1", "data_1", "data_1", "data_1", "data_2", "data_2", "data_2")
d1_var1 = c(1,3,2,4,7,9,8) 
d2_var1 = c(3,1,3,1,6,7,8)
d3_var1 = c(40,20,10,40,200,300,200)
d1_var2 = c(90,64,24,10,70,70,70)
d2_var2 = c(10,20,15,15,70,40,20)
test = data.frame(target,d1_var1,d2_var1,d3_var1,d1_var2,d2_var2)

确定我一直在提取所有变量的第二部分的变量

attach(test)
x = names(test)
Key_Pre = "d1_"
d_variables <- grep(Key_Pre, x, fixed=T, value=T)
d_variables = d_variables[substring(d_variables,1,nchar(Key_Pre))==Key_Pre]
d_variables = gsub("d1","",d_variables)#Remove d1 from the start and then there is a list of the variables

然后在for循环中,我遍历"d1","d2"的前缀并尝试提取列数据,但这不起作用。

Prefix = c("d1","d2")

for(i in 1:length(d_variables)){        #Iterate through the d1/d2 prefixed variables
    Set_hold = matrix(,nrow=length(target_name),ncol=3) #Holds data for all target_names
    Var_hold = d_variables[i]   #This dummy variable is neccesary when extracting using a list

    for(j in 1:length(Prefix)){ #Iterate through each of the prefixes
        Var_hold_d = paste0(Prefix[j],Var_hold) #This changes the variable name for each day
        Set_hold[,j] <- test$Var_hold_d #The data for each variable on a day is passed into the matrix
    }   
}

有没有办法从重建变量名中提取这些列的值?任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

test [,Var_hold_d]可能会这样做,但我确信这是一种更有效的排序和执行整个过程的方法。