2016-10-25 5 views
0

Предположим, у меня есть следующий набор данных ...R - Можно ли перебирать несколько переменных параллельно?

df <- data.frame(first = sample(seq(0, 100, 1), 10), 
       second = sample(seq(0, 1, 0.01), 10), 
       third = sample(seq(0, 1000, 1), 10)) 

... и следующий вектор, который содержит заголовки для каждой переменной в ЦФ.

titles <- c("This is the first plot", 
      "This one the second", 
      "And this is the third") 

Теперь я хотел бы создать штрих-код для каждой переменной. Вот как я мог это сделать вручную:

par(mfrow = c(2, 2)) 
barplot(df[, 'first'], main = titles[1]) 
barplot(df[, 'second'], main = titles[2]) 
barplot(df[, 'third'], main = titles[3]) 

Но я хотел бы иметь возможность сделать это, используя цикл for. Ниже приведен пример псевдо-цикла, описывающего, как я хотел бы это сделать.

par(mfrow = c(2, 2)) 
for(x in names(df), y in titles) { 
    barplot(df[, x], main = y) 
} 

Есть ли способ сделать это в R?

+4

Вы можете использовать 'для (I в seq_along (Df)) {', а затем использовать индекс для подмножества в 'заголовки' – akrun

ответ

1

Это работает

df <- data.frame(first = sample(seq(0, 100, 1), 10), 
       second = sample(seq(0, 1, 0.01), 10), 
       third = sample(seq(0, 1000, 1), 10)) 

titles <- c("This is the first plot", 
      "This one the second", 
      "And this is the third") 

par(mfrow = c(2, 2)) 
if(length(titles) == dim(df)[2]){ 
    for(i in seq(length(titles))){ 
    barplot(df[,i], main = titles[i]) 
    } 

} 
+0

Спасибо! Это работает. Теперь мне просто нужно выяснить, как и почему. – lillemets

Смежные вопросы