2016-08-20 2 views
-2

Ich bin sehr neu in R Sprache. Ich möchte den Namen der Listenelementnummer ändern.Konvertiere die Liste in die benannte Liste in R

Zur Zeit habe ich die Liste wie folgt aus: (Screenshot von R Studio)

> Degrees_df1 
[[1]] 
[1] "MCA" 

[[2]] 
[1] "B.Com" 

[[3]] 
[1] "XII" 

[[4]] 
[1] "X" 

ich es so konvertieren wollen:

> Degrees_df1 
$Degrees1 
[1] "MCA" 

$Degrees2 
[1] "B.Com" 

$Degrees3 
[1] "XII" 

$Degrees4 
[1] "X" 

: Ich bin in R Sprache jede Art von Hilfe wird für me.Thanks im Voraus dankbar .......

Antwort

0

So möchten Sie Ihre Liste Namen haben:

NAME <- paste0("Degrees", 1:length(Degrees_df1)) 

Jede der folgenden Aussagen ist OK:

names(Degrees_df1) <- NAME 

attr(Degrees_df1, "names") <- NAME 

Degrees_df1 <- "names<-"(Degrees_df1, NAME) 

Degrees_df1 <- setNames(Degrees_df1, NAME) 

Degrees_df1 <- structure(Degrees_df1, names = NAME) 

Aber ich denke, das Beste ist, Namen zu geben, wenn Sie die Liste erstellen. Wenn Sie zum Beispiel tun:

list(1, 2, 3, 4) 

die resultierende Liste hat keine Namen. Wenn Sie das tun,

list(a = 1, b= 2, c = 3, d = 4) 

die resultierende Liste hat Namen.


Wenn ich Paste-Funktion dort bewerbe ich bin immer Fehler wie folgt aus:

Fehler bei assign (Namen (paste0 ("Degrees_df", i)), paste0 ("Degrees", 1: Länge (get (paste0 ("Degrees_df". ungültiges erstes Argument

Sorry, ich wollten Sie Ihren Code innerhalb for-Schleife Paste-Funktion modifizieren

Sie möglicherweise benötigen diesen (nicht eff iziente):

df_i <- get(paste0("Degrees_df", i)) ## a local variable 
names(df_i) <- paste0("Degrees", 1:length(df_i)) ## modify local variable 
assign(paste0("Degrees_df", i), df_i) ## write back and update 

oder (besser):

df_i <- get(paste0("Degrees_df", i)) ## a local variable 
assign(paste0("Degrees_df", i), 
     setNames(df_i, paste0("Degrees", 1:length(df_i)))) 
# assign(paste0("Degrees_df", i), 
#  "names<-"(df_i, paste0("Degrees", 1:length(df_i)))) 
# assign(paste0("Degrees_df", i), 
#  structure(df_i, names = paste0("Degrees", 1:length(df_i)))) 

assign wird verwendet Wert zuzuweisen (oder eine andere Variable) zu einer Variablen. Es sieht so aus, als ob Ihr Fehlercode versucht, Namensattribute zuzuweisen. Beachten Sie, dass die Namen einer liste/dat.frame "attribute" sind, keine Variable, Sie können also assign nicht verwenden, um sie zu ändern.

+0

Hallo @Zheyuan Li, wenn ich einfügen Funktion dort drüben bekomme ich Fehler wie folgt: Fehler beim Zuweisen (Namen (paste0 ("Degrees_df", i)), paste0 ("Grad", 1: Länge (get (paste0 ("Degrees_df",: ungültiges erstes Argument – anindya

+0

Sorry @Zheyuan Li Ich wollte Ihren Code innerhalb von for loop mit Paste-Funktion ändern. Bitte helfen Sie mir, dies auch zu lösen .. – anindya

+0

@ZheyuanLi; Ich denke, Ihre Bearbeitung sollte stärker haben Bedenken Sie, dass die Op ihren Workflow überdenken sollten, wenn sie es auf diese Weise versuchen. – user20650

Verwandte Themen