Mamy funkcję, która wymaga wielu argumentów bez wartości domyślnych dla żadnego z nich. Jednakże, nawet jeśli niektóre z nich nie są określone, funkcja zwraca wartość, jeśli te parametry są używane tylko do podziału macierzy (i ewentualnie innych typów). Zastanawiają nas, dlaczego tak jest - czy ktoś może pomóc?Wartości funkcji R bez wartości domyślnych, które są ignorowane
szczególności, dlaczego następujący kod nie zwróci błąd, ale sumy na całej matrycy i ignoruje j
:
foo <- function(mat, j){
v <- sum(mat[,j])
v
}
foo(mat = matrix(1:4,3,4))
Więc gdy' R' nie może znaleźć wartości dla 'j' w swoim środowisku, po prostu zignoruje, że' j' miało wskazywać na kolumnę (wiersz)? Czy tak jest zawsze w przypadku indeksowania obiektu? –
Nie, gdy R ocenia, że 'j' i' j' nie znajduje się w bieżącym lub w środowiskach macierzystych, powoduje to błąd. W tym przypadku nie ma błędu, ponieważ 'j' nie jest oceniany. Argumenty R są oceniane w środowisku funkcji, gdy (jeśli) są potrzebne, a niektóre specjalne funkcje, takie jak 'missing()', nie oceniają w ogóle ich argumentów. –