2013-12-08 2 views
0

Я пытаюсь создать цикл, который генерирует переменные. Но мне нужно указать имена переменных, используя метод ввода. Что такое соглашение для ввода имен строк в переменной генерацииСоздание переменных с помощью строковых вводов

х = «Переменная» у = «вес» г = «высота»

ху = паста (х, у, отд = «») XZ = паста (х, у, отд = "")

xy_one = 1: 10 xy_two = 11: 20

Так xy_one должны быть названы VariableWeight_one и xz_two должны быть имена Variableheight_two

ответ

1

Согласен с Карлом не делать это таким образом, но я думаю, что его подход может быть улучшена за счет использования «[[» вместо «$». Попробуйте:

myVars<-list() 
x="Variable"; y="Weight"; z="Height" 
myVars[[ paste(x,y,"_one", sep="")]] <- 1:10 
myVars[[ paste(x,z,"_one", sep="")]] <- 11:20 

Если вы действительно все еще хотите построить имена я сочинить подходящее дополнение:

x="Variable"; y="Weight"; z="Height" 
assign(paste(x,y,"_one", sep=""), 1:10) 
assign(paste(x,z,"_one", sep=""), 11:20) 
ls(patt="Variable") 
[1] "VariableHeight_one" "VariableWeight_one" 

Compare усилия (и языка околичностей) может потребоваться, чтобы найти созданную первую переменную используя свой подход с тем, как просто было бы извлечь первый элемент из myVars:

eval(parse(text=ls(patt="Variable")[1])) 
# [1] 11 12 13 14 15 16 17 18 19 20 

    myVars[[1]] 
# [1] 1 2 3 4 5 6 7 8 9 10 

(Кроме того, он даже не был правильным.)

+0

Выглядит как хороший способ. –

1

Настоящий ответ: не делайте этого. Гораздо проще и продуктивнее создать переменную list или dataframe, выгрузить свои данные в одинаковые элементы и затем присвоить имена этим элементам. В вашем случае,

mydata<- list() 
mydata$VariableWeight_one <- xy_one 
mydata$Variableheight_two <- xy_two 
+0

Спасибо за ответ Карл. Но в конце дня я пытаюсь создать способ генерации переменных во всем цикле. Мне нужно соглашение, используемое в R, для ввода строк в имена переменных. – jessica

+0

для (i in c («abe», «john», «ryan», «carl») {i_score = i} – jessica

+0

@jessica, тогда вам придется заглянуть в печально известный 'eval (parse (foo))' конструктор - или метод 'assign()' DWin. –

Смежные вопросы