1

EDIT: I solved this one on my own. It had nothing to do with the function object assignment, it was that I was assigning the results to a vector "[]" rather then to a list "[[]]"

here's more reading on the subject: The difference between [] and [[]] notations for accessing the elements of a list or dataframe

I'm trying to filter event data. Depending on what I'm looking at I've got to do the filtering different ways. I've got two functions that I use for filtering (I use them throughout my project, in addition to this instance):

drop_columns <- function(x, ...) {
      selectors <- list(...)
      return(x[ , -which(names(x) %in% selectors)])
    }

filter_by_val <- function(x, col, ...) {
      return(x[ which(x[, col] %in% ...), ])
    }

Here's the function that choses which function does the filtering, and then executes it. Note that I'm assigning the function to an object called "filter_method":

filter_playtime_data <- function (key_list, data) {
  filter_method <- NULL
  out_list <- list()

  if(key_list$kind == "games") {
    filter_method <- function(key_list) {
      drop_columns(filter_by_val(data, "GameTitle", key_list), "X")
    }
  } else if (key_list$kind == "skills") {
    filter_method <- function(key_list) {
      filter_by_val(data, "Skill", key_list)
    }
  }
  # Separate data with keys
  out_list["ELA"] <- filter_method(key_list[["ELA"]])
  out_list["MATH"] <- filter_method(key_list[["MATH"]])
  out_list["SCI"] <- filter_method(key_list[["SCI"]])

  return (out_list)
}

I'm trying to filter data based on "skills" (ie. using filter_by_val) and it's not working as expected. I'm feeding in a data.frame and I'm expecting a data.frame to come out, but instead I'm getting a list of indexes, as if the function is only returning this part of my function: -which(names(x) %in% selectors)

When I run this is the debug browser -- ie. filter_method(key_list[["ELA"]]) -- it works as expected, I get the data frame. But the values held in my output list: out_list[[ELA]] is the list of indexes. Any idea what's happening?

Community
  • 1
  • 1
JoeM05
  • 914
  • 2
  • 10
  • 27

0 Answers0