I'm not sure we have enough information, but given your matrix: > mt <- matrix(c(1, 2, 3, 10, 15, 20, 20, 40, 80, 30, 60, 120), 3, 4) > mt [,1] [,2] [,3] [,4] [1,] 1 10 20 30 [2,] 2 15 40 60 [3,] 3 20 80 120 # Get differences between adjacent values in each column > mt.d <- abs(diff(mt)) > mt.d [,1] [,2] [,3] [,4] [1,] 1 5 20 30 [2,] 1 5 40 60 # Get ratio of cols 2-4 to col 1 > mt.d[,-1]/mt.d[,1] [,1] [,2] [,3] [1,] 5 20 30 [2,] 5 40 60 # Get ratio of cols 2-4 to cols 1-3 > mt.d[,-1]/mt.d[,1:3] [,1] [,2] [,3] [1,] 5 4 1.5 [2,] 5 8 1.5
------------------------------------- David L Carlson Department of Anthropology Texas A&M University College Station, TX 77840-4352 -----Original Message----- From: r-help-boun...@r-project.org [mailto:r-help-boun...@r-project.org] On Behalf Of message Sent: Thursday, June 19, 2014 8:42 AM To: r-help@r-project.org Subject: [R] apply diff type function to matrix Readers, For a matrix: 1 10 20 30 2 15 40 60 3 20 80 120 Using a spreadsheet, a differential function can be applied to the data as a formula: |(10-15)/(1-2)| ... repeated for each pair of adjacent values What is the corresponding function in R please? Is it better to write a new function, or to use some form of function 'diff'? ______________________________________________ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code. ______________________________________________ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.