Hi David, What an good solution. It works perfectly and it's really simple. (I only removed the "1+" in ncol=1+max(j), it already has 6 columns) My result has been:
> df <- read.table(file="df.txt", head=T, sep="\t") > df i j k 1 1 2 5.2 2 1 3 9.1 3 1 4 8.0 4 1 5 2.3 5 1 6 8.4 6 2 3 6.6 7 2 4 7.4 8 2 5 7.1 9 2 6 5.5 10 3 4 4.1 11 3 5 3.9 12 3 6 9.2 13 4 5 8.5 14 4 6 7.6 15 5 6 9.9 > zmat <- with(df, matrix(0, ncol=max(j), nrow=1+max(i) )) > # Then populate it with: > zmat[with(df, cbind(i,j)) ] <- with(df, k) > zmat [,1] [,2] [,3] [,4] [,5] [,6] [1,] 0 5.2 9.1 8.0 2.3 8.4 [2,] 0 0.0 6.6 7.4 7.1 5.5 [3,] 0 0.0 0.0 4.1 3.9 9.2 [4,] 0 0.0 0.0 0.0 8.5 7.6 [5,] 0 0.0 0.0 0.0 0.0 9.9 [6,] 0 0.0 0.0 0.0 0.0 0.0 Great. (I only inluded some png images in the post because the matrix looked more neat to me that way... It was my first time on Nabble. Thanks for calling my attention on that, you are right) -- View this message in context: http://r.789695.n4.nabble.com/built-a-lower-triangular-matrix-from-dataframe-tp4390813p4393591.html Sent from the R help mailing list archive at Nabble.com. ______________________________________________ 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.