Lookup GINI by year and country This takes a dataframe as an argument, looks at all pairs of two columns in that data frame (country and year) and returns a column value of that pair in another data frame (the gini number).

get_gini &lt;- function(year, country){
    GINI = 0
    SUBSETTED_WITH_COUNTRY_NAME_NOW_WITH_YEAR &lt;- inequality[inequality$Code== country &amp; inequality$Year== year,]
    GINI &lt;- mean(as.numeric(SUBSETTED_WITH_COUNTRY_NAME_NOW_WITH_YEAR$Gini))

    country_and_year&lt;- totes_data[totes_data$totes_data == country &amp; totes_data$year == year,] 
    country_and_year$GiniState1&lt;-GINI
    output&lt;-country_and_year$GiniState1
    output&lt;-output[1]
    if (is.na(output)){
      output=0
    }
    else {
      output = output
    }
    assign("ginilist",output, envir=globalenv())
    rbind(output,ginilist)
}
With the data.table package, you can do a quick join and get the gini coefficient much easier. This solution is also vectorized, so you can call it with something like gini(2000:2004, 'USA') to get the gini coefficients for the USA for years 2000-2004. 

It is also good practice to include the data in your function call, so you don't use objects from the global environment within the function call. This function outputs the entire data.table, but you can also just use the gini coefficient as output, if you add [, GINI] at the end.  

gini &lt;- function(year, country, data = inequality){
  require(data.table)
  setkey(setDT(data), 'Code', 'Year')[J(Code = country, Year=year), 
                                        list(GINI = mean(as.numeric(Gini))), 
                                        by=list(Code, Year)]
}