मुझे पता है कि अगर मेरे पास a = "var.name" जैसे स्टोर किए गए वेरिएबल का नाम है, तो मैं इसे var.name eval(as.symbol(a)) या get(a) करके कॉल कर सकता हूं, लेकिन मैं न केवल कॉल करना चाहता था परिवर्तनशील हैं, लेकिन उसमें परिवर्तन भी करते हैं। उदाहरण:

names = c("X1","X2")
for(i in names){
    assign(i, cbind(replicate(2,rnorm(3))) #Just creating a 3x2 matrix with dummy data
    ###

### पर मैं चरों में परिवर्तन करना चाहता हूं, विशेष रूप से इसके कॉलम नामों को "ए" और "बी" में बदलना चाहता हूं।

मैंने colnames(get(i)) = c("a","b"), या colnames(eval(as.symbol(i))) = c("a","b") की कोशिश की, लेकिन वे could not find function "eval<-" जैसी त्रुटियां लौटाते हैं

0
Ricardo Semião e Castro 14 अक्टूबर 2020, 19:17

1 उत्तर

सबसे बढ़िया उत्तर

एक विकल्प पहले चरण में मैट्रिक्स बनाना और दूसरे चरण में एक नए नाम को नाम देना और असाइन करना हो सकता है।

names = c("X1","X2")
for(i in names){
  x <- cbind(replicate(2,rnorm(3))) 
  assign(i, provideDimnames(x))
}   

#--------------
> X1
            A          B
A -0.59174062  1.8527780
B -0.53088643 -3.2713544
C -0.09330006 -0.5977568


एक अन्य विकल्प यह होगा कि मैट्रिक्स के निर्माण के समय मंद नामों को निर्दिष्ट किया जाए।

for (i in names) {
  x <- matrix(replicate(2, rnorm(3)),
              ncol = 2,
              dimnames = list(a = c(LETTERS[1:3]), b = c(LETTERS[1:2])))
  
  assign(i, x)
}

#-------------------
> X1

   b
a            A           B
  A -0.2313692 -0.93161762
  B -0.9666849  0.06164904
  C  1.5614446 -0.09391062
0
nniloc 14 अक्टूबर 2020, 20:01