Kişisel kullanım için aşağıdaki işlevleri kullanıyorum. Makinemin herhangi bir paketinin olup olmadığını görmek için bir yazarın ismini alır.Neden rownames (installed.packages()) bir ad özelliğine sahip?
authoredPackages <- function (author)
{
s <- sapply(rownames(installed.packages()),
packageDescription, fields = "Author")
names(grep(author, s, value = TRUE))
}
İşte sorun. Yeni bir R oturumu açıldıktan ve işlevi atadıktan sonra, işlevine her zaman işlevinin ilk çağrısı boş dizelerin karakter vektörünü döndürmesi gereken vektörün doğru uzunluğunu döndürür. Bunu göstermek için yeni bir R oturumu açın, işlevi atayın ve en sevdiğiniz paket yazarının soyadını kullanarak çalıştırın. Her zaman ilk çağrıda olur
authoredPackages("Temple Lang")
# [1] "jsonlite" "RCurl" "RJSONIO" "XML"
... İlk ... ...
authoredPackages("Temple Lang")
# [1] "" "" "" ""
boş karakter vektör dönmelidir ve sonra tekrar yapmak ve doğru sonuç döndürür yeni bir R oturumunda. Bu neden oluyor, ve nasıl düzeltebilirim ki fonksiyon her zaman ilk denemede çalışır?
Benim R --vanilla
seans bilgisi:
R version 3.1.1 (2014-07-10)
Platform: x86_64-pc-linux-gnu (64-bit)
locale:
[1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C
[3] LC_TIME=en_US.UTF-8 LC_COLLATE=en_US.UTF-8
[5] LC_MONETARY=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8
[7] LC_PAPER=en_US.UTF-8 LC_NAME=C
[9] LC_ADDRESS=C LC_TELEPHONE=C
[11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C
attached base packages:
[1] stats graphics grDevices utils datasets methods base
Güncelleme: Ar açılması üzerine, rownames(installed.packages())
çünkü lme4
paketinin bir names
niteliği vardır gibi görünüyor. Neden olduğundan emin değilsin ve tek isim. İkinci çağrıda nasıl kaybolduğunu da çok garip. rownames(installed.packages())
diyorsunuz ilk defa öznitelik bir names
varmış gibi
rownames(installed.packages())[228]
# ret0
# "lme4"
R - vanilla ile mi çalışıyorsunuz? 'SessionInfo() '? benim için 'authoredPackages() 'R sürüm 3.1.2 için beklendiği gibi çalışır (2014-10-31 r66919)/Platform: x86_64-unknown-linux-gnu (64-bit) ve R Under development (kararsız) (2014- 11-23 r67046)/Platform: x86_64-unknown-linux-gnu (64-bit) –
, 'install.packages' kaynağında 'ret0' ifadesinden bahsedilir; işlevin sonuna doğru noCache = FALSE; Belki de "noCache = TRUE" ifadesini argüman olarak eklemek bir iştir? –
@MartinMorgan: Güzel tahmin, ancak 'noCache = TRUE 'ekleme bana yine aynı garip sonuçları veriyor. –