1

I have a dataframe like this:

row   col
1     1
1     50
1     55
2     75

and I want to select all the row and col values that are paired so I can insert them into a function.

I am trying this code:

library(rhdf5)

 for(row in df$row){

  for (col in df$col){

      apixel = h5read("C/path_to_a_file',, index=list(1, col, row))
      apixel= data.frame(apixel)
 }
}

This is inserting all my row and col values from my df like I want, but it is doing every possible combination of them I only want to insert the appropriate pairing. For instance, row 1 should only ever be paired with 1, 50 and 55 as a corresponding col, not 75.

Possibly I could try to zip the two columns and then return the associated tuples?

Stefano Potter
  • 3,467
  • 10
  • 45
  • 82

1 Answers1

2

First step: write the function so as it accepts pairs of (row, col) as an argument:

read_pixels <- function(row, col) {
  require(rhdf5)
  apixel <- h5read("C/path_to_a_file',, index=list(1, col, row))
  apixel <- data.frame(apixel)

  # do something with apixel
}

Now you can pass each row of the data frame to your function. There are various ways to do that, here is an ugly one using apply:

apply(myDataFrame, 1, function(x) read_pixels(x[1], x[2])
neilfws
  • 32,751
  • 5
  • 50
  • 63