Ich bin neu in R. Lesebuch von R von Tilman Davies. Es wird ein Beispiel für die Verwendung einer extern definierten Hilfsfunktion angegeben, die zufälligerweise doppelte eckige Klammern [[]] verwendet. Bitte erläutern Sie, was helper.call [[1]] und helper.call [[2]] tun und verwenden Sie hier doppelte Klammern.Verwendung von doppelten Klammern unklar
multiples_helper_ext <- function(x=foo,matrix.flags,mat=diag(2){
indexes <- which(matrix.flags)
counter <- 0
result <- list()
for(i in indexes){
temp <- x[[i]]
if(ncol(temp)==nrow(mat)){
counter <- counter+1
result[[counter]] <- temp%*%mat
}
}
return(list(result,counter))
}
multiples4 <- function(x,mat=diag(2),str1="no valid matrices",str2=str1){
matrix.flags <- sapply(x,FUN=is.matrix)
if(!any(matrix.flags)){
return(str1)
}
helper.call <- multiples_helper_ext(x,matrix.flags,mat=diag(2)
result <- helper.call[[1]] #I dont understand this use of double bracket
counter <- helper.call[[2]] #and here either
if(counter==0){
return(str2)
} else {
return(result)
}
}
foo <- list(matrix(1:4,2,2),"not a matrix","definitely not a matrix",matrix(1:8,2,4),matrix(1:8,4,2))
Vorgeschlagene Betrogene: [Unterschied zwischen \ [\] und \ [\ [\] \]?] (Https://Stackoverflow.com/q/1169456/903061), obwohl [Wie verwendet man Listen in R korrekt? ?] (https://stackoverflow.com/q/2050790/90306) ist ebenfalls relevant. Kurz gesagt, wenn "x" eine Liste ist, dann wählt "x [[1]]" das erste Element von "x", während "x [1]" eine Unterliste (noch eine Liste!) Enthält, die das erste Element von "x" enthält '. Verwenden Sie 'help (" [[")' für die integrierte Hilfe. – Gregor
In welcher Liste werden die doppelten Klammern referenziert? – Aitch
Die Funktion gibt 'list (result, counter)' zurück. So bezieht sich 'helper.call [[1]]' auf 'result'. –