Yanıtlar:
Teknik olarak listeleri vardır çok az bu terimi kullanmak istiyorsunuz rağmen, vektörler. "liste", diğerleri "mantıksal", "karakter", "sayısal", "tam sayı" olmakla birlikte, birkaç moddan biridir. Vektörler olarak adlandırdığınız şey, katı R tabiriyle "atomik vektörler" dir:
aaa <- vector("list", 3)
is.list(aaa) #TRUE
is.vector(aaa) #TRUE
Listeler "özyinelemeli" bir tür (vektör) iken atomik vektörler:
is.recursive(aaa) # TRUE
is.atomic(aaa) # FALSE
Veri nesnelerini özyinelemeli, atomik veya boyutsal niteliklere (matrisler ve diziler) sahip olmalarına bağlı olarak farklı işlevlerle işlersiniz. Ancak, farklı veri yapılarının "avantajları ve dezavantajları" ile ilgili bir tartışmanın SO için yeterince odaklanmış bir soru olduğundan emin değilim. Tommy'nin söylediğine ek olarak, listelerin rastgele sayıda başka vektörü tutabilmesinin yanı sıra, yapısını tanımlayan boyutsal bir niteliğe sahip belirli bir liste türü olan veri çerçevelerinin mevcudiyeti de vardır. Gerçekten katlanmış atomik nesneler olan matrisler ve dizilerden farklı olarak, veri çerçeveleri faktör türleri dahil olmak üzere çeşitli türleri tutabilir.
İsimlerden başka özellikler olduğunda is.vector
fonksiyonun geri döneceğine dair uyarı da FALSE
var. Bakınız: vektör nedir?
Listeler "yinelemeli" dir. Bu, farklı türlerde değerler, hatta başka listeler içerebilecekleri anlamına gelir:
x <- list(values=sin(1:3), ids=letters[1:3], sub=list(foo=42,bar=13))
x # print the list
x$values # Get one element
x[["ids"]] # Another way to get an element
x$sub$foo # Get sub elements
x[[c(3,2)]] # Another way (gets 13)
str(x) # A "summary" of the list's content
Listeler, R'de veri kümelerini temsil etmek için kullanılır: data.frame
sınıf, esasen her öğenin belirli bir türden bir sütun olduğu bir listedir.
Başka bir kullanım, bir modeli temsil ederken kullanılır: sonuç lm
, bir grup yararlı nesne içeren bir liste döndürür.
d <- data.frame(a=11:13, b=21:23)
is.list(d) # TRUE
str(d)
m <- lm(a ~ b, data=d)
is.list(m) # TRUE
str(m)
Atomik vektörler (liste dışı, ancak sayısal, mantıksal ve karakter) kullanışlıdır çünkü tüm elementlerin aynı türe sahip olduğu bilinmektedir. Bu, onları çok hızlı manipüle etmeyi sağlar.
R'ye yeni girmiş, ancak C / Java / Ruby / PHP / Python arka planından gelen biri olarak, işte böyle düşünüyorum.
A list
gerçekten bir dizi + bir karma haritadır. Bu bir PHP ilişkisel dizisidir.
> foo = list(bar='baz')
> foo[1]
'baz'
> foo$bar
'baz'
> foo[['bar']]
'baz'
A vector
, sabit tip bir dizi / listedir. Bağlantılı bir liste gibi düşünün - çünkü birbirine benzemeyen öğeleri bağlantılı bir listeye koymak zaten bir kalıp karşıtıdır. SIMD / MMX / vektör birimlerinin kelimeyi kullandığı aynı anlamda bir vektördür.
Bu ve benzeri giriş soruları http://www.burns-stat.com/pages/Tutor/hints_R_begin.html adresinde yanıtlanmıştır.
Sizi olabildiğince hızlı bir şekilde R ile çalışmaya hazırlayan nazik bir giriş olması amaçlanmıştır. Bir dereceye kadar başarılı oluyor.
--- Düzenle: --
Daha fazla açıklama girişimi; yukarıdaki referanstan alıntılanmıştır.
Atomik vektör
Muhtemelen karşılaşacağınız üç çeşit atomik vektör vardır:
- “Sayısal”
- "mantıklı"
- "karakter"
Atom vektörleri hakkında hatırlanması gereken şey, içlerindeki tüm elementlerin yalnızca tek tipte olmasıdır.
Liste
Listelerin farklı bileşenlerde farklı türde öğeleri olabilir. Bir listenin bir bileşeninin başka bir liste, bir atom vektörü (ve diğer şeyler) olmasına izin verilir.
Lütfen bu bağlantıya da bakın .
liste, karakter, sayısal, mantıksal vb. gibi birden çok veri türünü içerir. ancak vektör yalnızca benzer türde veriler içerir. örneğin:
scores <- c(20,30,40,50)
student <- c("A","B","C","D")
sc_log <- c(TRUE,FALSE,FALSE,TRUE)
liste için:
mylist <- list(scores,student,sc_log)
# search for class of mylist vector
#check structure of mylist using str() function.
str(mylist)
[1] list of 3
[1] $:num [1:4] 20 30 40 50
[2] $:chr [1:4] "A""B""C""D"
[3] $:log [1:4] TRUE FALSE FALSE TRUE
bu, mylist'te sayısal, karakter ve mantıksal gibi birden çok veri türü içeren bir liste anlamına gelir, ancak vektörde, o vektördeki tüm öğelerin tek veri türü olacaktır.
örneğin:
vektör için:
vector1 <- c(1,2,3,4)
Class(vector1)
[1] "Numeric"
#which means all elements of vector containing single data type that is numeric only.
key
kullanarak vektörlerde s'ye sahip olabilirsiniznames
.