'Why my function always mistakenly returns a transposed matrix as output?

I am basically a beginner in R and my question most likely has a very basic answer but after many tries I just can't figure out the reason why my function always returns a transposed output. Any help is much appreciated. I am using the Rstudio IDE, R 4.1.2.

My goal was to write a function to add two additional columns to any given dataframe, which correspond to mean and maximum of each row, respectively.

So I created a sample dataframe:

a <- c(1:10)
b <- c(11:20)
c <- c(21:30)
df <- data.frame(a,b,c)

Then I wrote the following function:

desc_n <- function(x){
  return(cbind(
                mean(x, na.rm=T),
                max(x,na.rm=T))
              )
}

After that I use the apply() function to apply my newly defined desc_n function to every row of the df dataframe.

n_df <- apply(df, 1, desc_n)

However, while the output is correct mathematically, it is transposed. Output:

     [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
[1,]   11   12   13   14   15   16   17   18   19    20
[2,]   21   22   23   24   25   26   27   28   29    30

While I expected it to be 10 rows and 2 columns. No matter what I do, the output remains the same. I know how to transpose the output to my preference, but this is mostly a learning example for me. So I have 2 questions:

  1. Why does the desc_n function returns a [2,10] output while I used cbind in it? Shouldn't it return a [10,2] output?
  2. Why does changing the cbind in the desc_n function to rbind returns the exact same results?

Again, any help is appreciated. Thank you.



Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source