Pierwsza linia dokumentacji dla Tostruwania wyraźnie Wywołuje to funkcję pomocnika dla funkcji formatu. Czy to sugeruje, że nigdy nie powinien być używany poza wewnętrznym kodem dla funkcji formatu? Jeśli tak, dlaczego odpowiadają go użytkownikom?

0
J. Mini 6 październik 2020, 22:50

1 odpowiedź

Najlepsza odpowiedź

W rzeczywistości pytasz 2 pytania:

  1. należy użyć toString poza format?
  2. Dlaczego jest dostępny użytkownikom R?

Jeśli chodzi o 1., zobacz @rui Barradas Komentarz, możesz użyć go poza format i są najwyraźniej przydatne. Odpowiedzi to również 2., ale w rzeczywistości istnieje drugi powód, również stwierdzono w pomocy:

Jest to ogólna funkcja, dla której można napisać metody: opisano tutaj tylko metodę domyślną.

Oznacza to, że jest dostępny dla użytkowników, aby mogli je łatwo rozwinąć. Na przykład. Powiedz, że nie jesteś zadowolony z funkcjonalności toString.default dla obiektów matrycy:

test_matrix <- matrix(1:4, ncol = 2)
test_matrix
     [,1] [,2]
[1,]    1    3
[2,]    2    4

toString(test_matrix)
[1] "1, 2, 3, 4"

Działa włącza w kolumdzie, ale chcesz wybrać, jeśli powinien obsługiwać gawię lub kolumny. Teraz możesz łatwo rozwinąć, pisząc nową metodę S3 dla obiektów macierzy:

toString.matrix <- function(x, width = NULL, rowwise = TRUE) {
  if (rowwise) {
    marg <- 1
  } else {
    marg <- 2
  }
  temp <- apply(x, marg, paste, collapse = ", ")
  string <- paste(temp, collapse = ", ")
  
  if (missing(width) || is.null(width) || width == 0) 
    return(string)
  if (width < 0) 
    stop("'width' must be positive")
  if (nchar(string, type = "w") > width) {
    width <- max(6, width)
    string <- paste0(strtrim(string, width - 4), "....")
  }
  string
}

toString(test_matrix)
[1] "1, 3, 2, 4"

toString(test_matrix, rowwise = FALSE)
[1] "1, 2, 3, 4"
1
starja 6 październik 2020, 20:11