Ahoy. I'm trying to run a function for each country in a multinational dataset. Keeping it simple, an example is

for(j in 11:14) {
if(data$country_str == "j") {

mu <- mean(data$ecdfs1)
} else {
mu <- 0
}
}

The number of countries is greater and the functions are more complex, but this fails just the same. The consistent error is


In if (data$country_str == "j") { :
  the condition has length > 1 and only the first element will be used

Using the inelegantly workable

if(data$country_str == "11") {

mu <- mean(data$ecdfs1)
} else {
mu <- 0
}

And repeating manually I still get the same error.

For those who know both, in Stata I did this with the foreach command (but I don't trust Stata's results for my ML estimates), although for summary statistics the bysort command would be appropriate. I can't find a clear analog in R.

Can anybody explain just what the error is, and how to fix it? Which 'condition' is inappropriately lengthed - the country string or the values it takes?

Neither the manual nor examples online match my problem - or at least not apparently to me. I've tried an ifelse but it runs the functions for every observation depending upon whether or not the condition is met. I only want 13 sets of output, not 30,000.

Do I need to just break my dataset up into the countries and do it the long way?


Much appreciated, thank you.

Casey

______________________________________________
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.

Reply via email to