2011-09-29 27 views
14

Listeye bir öğe eklendiğinde, öğenin listenin sonuna ekleneceği garanti edilir mi? Pratikte durum böyle görünüyor, ancak bunun tehlikeli bir varsayım olup olmadığından emin değil misiniz? o belgelenmiş değil (ve olması görünmüyor) EğerAdlandırılmış öğeye adlandırılmış öğe ekleme - listenin sonuna eklenecek şekilde garanti edildi mi?

test = list() 
test[[ "one" ]] = 1 
test[[ "two" ]] = 2 # will always appear after "one"? 
test[[ "three" ]] = 3 # will always appear after "two"? 
+0

Açık olması gerekirse, bir [['' bir ']] 'veya' [[' 1 ']] 'sayısal anahtar değil [[1]]' bir dize anahtarı kullanıyorsunuz. Ve tüm dize anahtarlarınızı harmanlama düzeninde alabilir miyiz? "[['One']]' yerine "[['1']]' gibi dize anahtarları yapabilir misiniz? – smci

cevap

20

, o zaman ben ona bağlı olmaz. Bunu gibi bir şey yaparak listenin sonunda görünür sağlayabilirsiniz:

test <- list() 
test <- c(test, one=1) 
test <- c(test, two=2) 
test <- c(test, three=3) 
+2

Ama bir listeye nasıl bir şeyler eklediğinize çok dikkat edin. Rgames sonucuna bak: tl <- liste() ' ' Rgames: tl [[1]] <- liste (bir = 1) ' ' Rgames: tl [[2]] <- data.frame (iki = 2) ' ' Rgames: tl $ üç <- 3' –

+0

@CarlWitthoft: davranış, tl [['2']] 'vs' tl [[2]] 'dize için farklı olabilir. OP yapar) vs sayısal tuşlar (yaptığınız gibi) – smci

+1

'ekleme (test, liste (üç = 3))' başka bir seçenek – baptiste

3

o zaman bunun doğru olduğunu görmek istiyorum R C kodu dalmıştır eğer şüpheli, ama Joshua, söylediği gibi onun belgelenmemiş. 'un numaralı davranışının belgelenip belgelenmeyeceği konusunda bir görüş almak için R-dev'e başvurabilirsiniz. Var olan kod zaten mevcut olabilir.

+2

Spacedman - R-dev'in belgelendirilmesini istemek için iyi bir öneri. Teşekkürler! – SFun28

+3

Ummmm .... Bir listenin (veya bir veri çerçevesinin ya da bunun için bir vektörün) yeni öğelerinin, "son" da herhangi bir yere nasıl yerleştirilebileceğini görmek için baskı yapıyorum. Bir elemanı tanımladığınız an, kullanılmayan bir yer alır. "Kullanılmayan" konusuna vurgu yapın. Bu, örneğin, iki unsuru olan bir listeye üçüncü bir öğenin eklenmesinin, 47.inci konuma atanmasına neden olmayacağı kadar açık olmalıdır. –

+2

Bir uzunluk-12 listesinin 7. yerine bir eleman koymanın sapkın olacağını, ama neden sonun değil, başlangıcın olmayacağını kabul ediyorum. Bir öğeye isim eklediğinizde, herhangi bir konum bilgisi vermezsiniz, bu nedenle başka bir şekilde belgelenmedikçe, dilin herhangi bir yere koyulması ücretsizdir. Bazı diller, dize anahtarının karma değeriyle sipariş verilebilir. – Spacedman