R में "पेस्ट" के साथ एक चर नाम बनाएँ?


87

निचे देखो:

paste("perf.a", "1", sep="")
# [1] "perf.a1"

क्या होगा यदि मैं एक मान निर्दिष्ट करना चाहता हूं perf.a1?

मैंने कोशिश की as.name, as.symbolआदि, कोई फायदा नहीं हुआ:

as.name(paste("perf.a", "1", sep="")) = 5
# Error in as.name(paste("perf.a", "1", sep = "")) = 5 : 
#   target of assignment expands to non-language object
as.symbol(paste("perf.a", "1", sep="")) = 5
# Error in as.symbol(paste("perf.a", "1", sep = "")) = 5 : 
#   target of assignment expands to non-language object
noquote(paste("perf.a", "1", sep="")) = 5
# Error in noquote(paste("perf.a", "1", sep = "")) = 5 : 
#   target of assignment expands to non-language object


जवाबों:




9

मेरे मामले में फ़ंक्शन eval () बहुत अच्छा काम करता है। नीचे मैं 10 चर उत्पन्न करता हूं और उन्हें 10 मान देता हूं।

lhs <- rnorm(10)
rhs <- paste("perf.a", 1:10, "<-", lhs, sep="")
eval(parse(text=rhs))

यदि आरएचएस जटिल या बड़ा है, तो उपयोग करने योग्य नहीं है। इसके अलावा, साधारण मामलों में भी, कुछ सटीक नुकसान है: आमतौर पर a <- rnorm(1); a - eval(parse(text=paste(a)))वापस नहीं आता है 0

3

मेरे मामले में मेरे द्वारा बनाए गए प्रतीक (टैक्स 1, टैक्स 2, आदि) में पहले से ही मूल्य थे, लेकिन मैं एक लूप का उपयोग करना चाहता था और प्रतीकों को दूसरे चर पर असाइन करना चाहता था। इसलिए उपरोक्त दो उत्तरों ने मुझे इसे पूरा करने का एक तरीका दिया। यह आपके प्रश्न का उत्तर देने में सहायक हो सकता है क्योंकि मूल्य का असाइनमेंट कभी भी हो सकता है।

output=NULL
for(i in 1:8){
   Tax=eval(as.symbol(paste("Tax",i,sep="")))
   L_Data1=L_Data_all[which(L_Data_all$Taxon==Tax[1] | L_Data_all$Taxon==Tax[2] | L_Data_all$Taxon==Tax[3] | L_Data_all$Taxon==Tax[4] | L_Data_all$Taxon==Tax[5]),]
   L_Data=L_Data1$Length[which(L_Data1$Station==Plant[1] | L_Data1$Station==Plant[2])]
   h=hist(L_Data,breaks=breaks,plot=FALSE)
   output=cbind(output,h$counts)
}
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.