আর তে "পেস্ট" দিয়ে একটি পরিবর্তনশীল নাম তৈরি করবেন?


89

নিচে দেখ:

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)
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.