R için yeniyim ve işlev ailesini uygulamasında bir tanıtmaya çalışıyorum. Özellikle, 2 karakter vektörünü, "ana bilgisayar" ve "konuk" u (aynı uzunlukta olması gerekmeyen) kabul edecek ve bana "ana bilgisayar" ile aynı uzunlukta bir indeks vektörü döndürecek olan daha yüksek mertebeden bir işlev yazmaya çalışıyorum. ", konuktaki endekslerine karşılık gelen sonuç öğeleriyle birlikte (NA olmasa bile).Bir indeks vektörü döndürmek için bu işlevi nasıl düzenleyebilirim?
host <- c("A","B","C","D")
guest <- c("D","C","A","F")
matchIndices <- function(x,y)
{
return(match(x,y))
}
Bu kod beklendiği gibi 3 döndürür: (? Sapply) Bu bir özlü uygulamak fonksiyonu ile değiştirmek mümkün olmak istiyorum döngü
matchIndices(host[1],guest)
Bu kod, aşağıdaki çıktıyı üretmesiyle "çalışır", ancak sonucun bir vektör olmasını gerçekten istiyorum ve uygulama işlevlerinden birinin hile yapacağı bir önsezim var. Sadece nasıl yazılacağıma takıldım. Herhangi bir yardım en çok takdir edilecektir. Teşekkürler.
3; A; NA; B; 2; C; 1; D;
sadece yapabileceği 'sapply (ana bilgisayar, maç, konuk) ', matchIndices' –
@Prasad'ı tanımlamanıza gerek yok Evet, bunu yapabilirdim ama bu şekilde bir kullanıcı işlevinin nasıl özüleceğini göstermek için bunu bıraktım. Bunun gibi bıraktığım sebep, bu, bir vektörün ilk argümanını kabul ettiği için, "match" ile doğrudan yapılabilirdi. Güncellenmiş cevabımı görün. –
Bu harika. Çok teşekkür ederim. "maç (ev sahibi, konuk)" mükemmel. Bu kadar küçük olabileceğini farketmedim. – user297400