Как использовать условные предложения в r - PullRequest
1 голос
/ 12 марта 2011

Допустим, у меня есть фрейм данных с двумя переменными x & y и множителем f с двумя уровнями a & b.Я хочу, чтобы R, например, plot(x,y) только тогда, когда f==a.Обычно я делю фрейм данных, но я хочу найти более эффективный способ сделать это.Я преследую два пути, но безуспешно.

Я пытаюсь использовать

for(i in f=="a"){plot(x,y)
}

Но он строит графики как с a, так и с b Я также пытаюсь использовать

ifelse(f=="a",plot(x,y),f)

но возвращает это сообщение об ошибке, которое я не понимаю.

Error in ans[test & !nas] <- rep(yes, length.out = length(ans))[test &  : 
  replacement has length zero

1 Ответ

2 голосов
/ 12 марта 2011

Я бы рассмотрел этот вопрос для уточнения деталей.Есть несколько способов сделать это.Следует отметить, что при условии, что все ваши столбцы происходят из одного и того же data.frame, вы должны сначала ссылаться на объект data.frame, а не только на столбцы, которые вы пытаетесь построить.Например, у вас может быть data.frame с именем df, который содержит столбцы x,y,f, а также различные объекты в вашей среде с именем x,y,f, которые полностью отличаются и не связаны с вашим data.frame.Вот несколько примеров:

#Sample data
df <- data.frame(x = rnorm(100), y = rnorm(100), f = sample(letters[1:2], 100, TRUE))

#With subset
df.a <- subset(df, f == "a")
plot(df.a$x, df.a$y)

#or
#Or logical indexing
plot(df$x[df$f == "a"] , df$y[df$f == "a"])

#or

#Combining with and logical indexing
with(df[df$f == "a" ,], plot(x,y))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...