группировка функций (tapply, в совокупности) и *применение семейного


apply

всякий раз, когда я хочу сделать что-то "карта"ру в р, я обычно стараюсь использовать функцию в семье.

sapplylapply

однако, я никогда не понимала различия между ними-как {и т. д.} применить функцию для ввода сгруппированы входе, что на выходе будет выглядеть, или даже то, что вход может быть ... поэтому я чаще просто пройти через них всех, пока я не получу то, что хочу.

может кто-нибудь объяснить, как использовать, какой, когда?

мой нынешний (возможно, неверное/неполное) понимание...

  • sapply(vec, f): input is a vector. output is a vector/matrix, where element i is f(vec[i]), giving you a matrix if f has a multi-element output

  • lapply(vec, f): same as sapply, but output is a list?

  • apply(matrix, 1/2, f): input is a matrix. output is a vector, where element i is f(row/col i of the matrix)
  • tapply(vector, grouping, f): output is a matrix/array, where an element in the matrix/array is the value of f at a grouping g of the vector, and g gets pushed to the row/col names
  • by(dataframe, grouping, f): let g be a grouping. apply f to each column of the group/dataframe. pretty print the grouping and the value of f at each column.
  • aggregate(matrix, grouping, f): similar to by, but instead of pretty printing the output, aggregate sticks everything into a dataframe.
  • plyrreshape

    побочный вопрос: я до сих пор не научился plyr или изменить-будет или заменить все это целиком?