R'de NA'yı Anlama
NA'nın ne anlama geldiğini, neden yayıldığını ve NULL'dan farkını öğrenin.
R'de NA'yı Anlama, CoddyKit'te ücretsiz bir R Academy dersidir. Bu, 4 dersinin 1. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, R Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. R Academy kursu toplamda 4 dersten oluşur.
R'de NA Nedir?
NA, Not Available ifadesinin kısaltmasıdır; eksik veya bilinmeyen bir değeri temsil eder. NULL (bir nesnenin bulunmaması) ya da NaN (sayı değil) değerlerinden farklı olarak NA, var olan ancak bilinmeyen veriler için yer tutucudur.
# NA represents a missing value
height_cm <- c(175, NA, 162, 188, NA, 170)
cat('Heights:', height_cm, '
')
cat('Length:', length(height_cm), '
') # NA counts as an element
cat('Sum:', sum(height_cm), '
') # NA propagatesNA ve NULL Karşılaştırması
NA, bir vektörün içindeki eksik bir değerdir; yuva vardır ancak bilinen bir değeri yoktur. NULL ise bir nesnenin tamamen bulunmamasıdır; uzunluğu 0'dır ve bir vektörün içinde saklanamaz.
# NA: element exists, value unknown
vec_with_na <- c(1, NA, 3)
cat('Vector with NA, length:', length(vec_with_na), '
') # 3
# NULL: nothing there at all
vec_with_null <- c(1, NULL, 3)
cat('Vector with NULL, length:', length(vec_with_null), '
') # 2!
# NULL gets dropped; NA is kept
cat('vec_with_na:', vec_with_na, '
')
cat('vec_with_null:', vec_with_null, '
')NA ve NaN Karşılaştırması
NaN (Not a Number), 0/0 veya sqrt(-1) gibi matematiksel olarak tanımsız işlemlerden kaynaklanır. Bu özel bir sayısal değerdir; NA ise her tür için geçerli olabilen genel bir eksik değer işaretidir.
# NaN from undefined operations
cat('0/0 =', 0/0, '
') # NaN
cat('sqrt(-1) =', sqrt(-1), '
') # NaN (with warning)
cat('Inf - Inf =', Inf - Inf, '
') # NaN
# NaN IS also NA (a special case)
cat('is.nan(NaN):', is.nan(NaN), '
')
cat('is.na(NaN): ', is.na(NaN), '
') # TRUE!
cat('is.nan(NA): ', is.nan(NA), '
') # FALSENA ve Inf
Inf ve -Inf, pozitif ve negatif sonsuzluğu ifade eder; 1/0 gibi işlemlerin sonucunda ortaya çıkar. NA'nın aksine Inf, bilinen (aşırı olsa da) bir numeric değerdir ve karşılaştırmalara normal şekilde katılır.
cat('1/0 =', 1/0, '
') # Inf
cat('-1/0 =', -1/0, '
') # -Inf
cat('Inf + 1 =', Inf + 1, '
') # Inf
cat('Inf > 1000:', Inf > 1000, '
') # TRUE
cat('is.infinite(Inf):', is.infinite(Inf), '
')
cat('is.na(Inf): ', is.na(Inf), '
') # FALSEAritmetikte NA Yayılımı
NA, aritmetikte bulaşıcıdır: NA içeren herhangi bir işlem NA döndürür. Bu kasıtlıdır; bir hesaplamadaki değerlerden biri bilinmiyorsa sonuç da bilinmiyor demektir.
x <- NA
cat('NA + 5: ', x + 5, '
') # NA
cat('NA * 0: ', x * 0, '
') # NA (not 0!)
cat('NA == NA:', x == NA, '
') # NA (not TRUE!)
cat('NA > 5: ', x > 5, '
') # NA
cat('sum(1,NA):', sum(1, NA), '
') # NAtypeof(NA) — Tür Belirtilmiş NA'lar
Varsayılan NA'nın türü logical'dır. R, her atomik tür için türü belirtilmiş NA çeşitleri sunar. Bunlar, istenmeyen tür dönüşümlerini önlemek amacıyla türü belirli vektörlerle çalışırken önemlidir.
cat('typeof(NA): ', typeof(NA), '
') # logical
cat('typeof(NA_integer_): ', typeof(NA_integer_), '
') # integer
cat('typeof(NA_real_): ', typeof(NA_real_), '
') # double
cat('typeof(NA_complex_): ', typeof(NA_complex_), '
') # complex
cat('typeof(NA_character_):', typeof(NA_character_), '
') # characterUygulamada NA_integer_
Eksik bir değer içeren integer vektör oluştururken vektör türünü korumak için NA_integer_ kullanın. Yalın NA kullanmak, bazı bağlamlarda örtük olarak double türüne dönüşüme neden olur.
# Using plain NA in an integer vector
v1 <- c(1L, 2L, NA, 4L)
cat('typeof with NA: ', typeof(v1), '
') # integer (OK here)
# Explicit typed NA is safer in functions
v2 <- c(1L, 2L, NA_integer_, 4L)
cat('typeof with NA_integer_:', typeof(v2), '
') # integer
# Check they behave the same
cat('Same?', identical(v1, v2), '
')NA_real_ ve NA_character_
NA_real_, double (numeric) vektörlerdeki eksik değerler için; NA_character_ ise eksik dizeler için kullanılır. Tür tutarlılığının önemli olduğu işlevlerin içinde vektör oluştururken bunlar özellikle önemlidir.
# Character vector with missing
names_vec <- c('Alice', 'Bob', NA_character_, 'Dave')
cat('Names:', names_vec, '
')
cat('typeof:', typeof(names_vec), '
')
# Numeric with missing
readings <- c(22.5, NA_real_, 21.3, NA_real_, 24.1)
cat('Readings:', readings, '
')
cat('Non-NA count:', sum(!is.na(readings)), '
')Mantıksal İşlemlerde NA
Mantıksal işlemlerde NA, üç değerli mantığı izler: TRUE | NA sonucu TRUE'dur (çünkü TRUE VEYA herhangi bir şey TRUE'dur); ancak FALSE | NA sonucu NA'dır (NA'nın değerini bilmeden sonucu belirleyemeyiz).
cat('TRUE | NA:', TRUE | NA, '
') # TRUE
cat('FALSE | NA:', FALSE | NA, '
') # NA
cat('TRUE & NA:', TRUE & NA, '
') # NA
cat('FALSE & NA:', FALSE & NA, '
') # FALSE
# Never use == to test for NA!
cat('NA == NA:', NA == NA, '
') # NA (not TRUE!)
cat('is.na(NA):', is.na(NA), '
') # TRUE (correct way)Vektörlerde ve Veri Çerçevelerinde NA
Eksik değerler gerçek dünyadaki verilerde sıkça görülür. NA'nın davranışını anlamak; özetleri doğru yorumlamanıza, veri kalitesi sorunlarını fark etmenize ve uygun işleme stratejisini seçmenize yardımcı olur.
ages <- c(25, NA, 32, NA, 29, 41, NA, 35)
cat('Ages:', ages, '
')
cat('Length:', length(ages), '
')
cat('Missing count:', sum(is.na(ages)), '
')
cat('Present count:', sum(!is.na(ages)), '
')
cat('Mean (fails):', mean(ages), '
') # NA
cat('Mean (works):', mean(ages, na.rm = TRUE), '
') # 32.4NA Türleri: Eksiksiz Bir Görünüm
R'deki NA ile ilişkili özel değerlerin özeti aşağıdadır:
NA— genel eksik değer (logical türü)NA_integer_,NA_real_,NA_complex_,NA_character_— türü belirtilmiş NA'larNaN— tanımsız sayı (0/0,sqrt(-1)sonucu)Inf,-Inf— sonsuz değerler (1/0sonucu)NULL— bir nesnenin yokluğu (uzunluk 0)
# Test functions for special values
x <- c(1, NA, NaN, Inf, -Inf, 0)
cat('Values: ', x, '
')
cat('is.na(): ', is.na(x), '
') # TRUE for NA and NaN
cat('is.nan(): ', is.nan(x), '
') # TRUE only for NaN
cat('is.infinite(): ', is.infinite(x), '
') # TRUE for Inf and -Inf
cat('is.finite(): ', is.finite(x), '
') # TRUE only for normal numbersHızlı Kontrol
R'de NA == NA ifadesi neye eşitlenir?
Özet: NA'yı Anlamak
Mükemmel! Bu dersten çıkarılacak temel noktalar:
NA= eksik değer (var olduğu bilinir, ancak değeri bilinmez)NULL= bir nesnenin yokluğu (vektörlerden çıkarılır)NaN= tanımsız aritmetik sonucu (aynı zamanda NA'dır)Inf/-Inf= sonsuz değerler (NA DEĞİLDİR)- NA aritmetikte bulaşıcıdır — NA üzerindeki işlemler NA döndürür
- Tür güvenli kod için türü belirtilmiş NA'ları (
NA_integer_vb.) kullanın - NA'yı her zaman
is.na()ile kontrol edin; hiçbir zaman== NAkullanmayın
# Key tests side by side
special_vals <- list(NA=NA, NaN=NaN, Inf=Inf, 'NULL-in-vec'=c(1,NULL,3)[2])
for (name in names(special_vals)) {
v <- special_vals[[name]]
cat(name, '| is.na:', is.na(v), '| is.nan:', is.nan(v[!is.infinite(v)]), '
')
}Sıkça Sorulan Sorular
“R'de NA'yı Anlama” dersi ücretsiz mi?
Evet — “R'de NA'yı Anlama” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve R Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. R Academy kursu toplamda 4 dersten oluşur.
“R'de NA'yı Anlama” dersinde ne öğreneceğim?
NA'nın ne anlama geldiğini, neden yayıldığını ve NULL'dan farkını öğrenin. R Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
R Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te R Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 1. dersidir.
“R'de NA'yı Anlama” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu R Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her R Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- R'de NA'yı Anlama
- Eksik Değerleri Belirleme ve Sayma
- NA Değerlerini Kaldırma ve Değiştirme
- Hesaplamalarda ve Toplamalarda NA