Ошибка: «Нажмите <Return>, чтобы увидеть следующий сюжет:» в r - PullRequest
2 голосов
/ 10 февраля 2011

У меня есть следующий код

frame()
Y = read.table("Yfile.txt",header=T,row.names=NULL,sep='')
X =  read.table("Xfile.txt",header=F,sep='')

plot(Y$V1~X$V1,pch=20,xlim=c(0,27))
par(new=T)
plot(Y$V1~X$V2,pch=20,xlim=c(0,27),col='red')
par(new=T)
plot(Y$V1~Y$V3,pch=20,xlim=c(0,27),col='blue')
par(new=T)

Все хорошо, и я получаю 3 графика на одном графике.Однако когда я хочу разделить X $ V1, X $ V2 и X $ V3, чтобы нормализовать данные таким образом, чтобы

plot(Y$V1~X$V1/Y$V2,pch=20,xlim=c(0,27))
par(new=T)
plot(Y$V1~X$V2/Y$V2,pch=20,xlim=c(0,27),col='red')
par(new=T)
plot(Y$V1~Y$V3/Y$V2,pch=20,xlim=c(0,27),col='blue')
par(new=T) 

, я получил сообщение

Нажмите Return, чтобы увидетьследующий график:

и графики просто не будут отображаться на том же графике.Кто-нибудь может сказать мне, что происходит и как это решить?

Ответы [ 2 ]

6 голосов
/ 10 февраля 2011

Если вы хотите использовать арифметические операции в формуле, вы должны использовать I() функции.Так что

plot(Y$V1~I(X$V1/Y$V2),pch=20,xlim=c(0,27))
par(new=T)
plot(Y$V1~I(X$V2/Y$V2),pch=20,xlim=c(0,27),col='red')
par(new=T)
plot(Y$V1~I(Y$V3/Y$V2),pch=20,xlim=c(0,27),col='blue')
par(new=T) 

работает.

После страницы справки по formula:

Чтобы избежать этой путаницы, функцию I() можно использовать для скобките части модельной формулы, где операторы используются в их арифметическом смысле.Например, в формуле y ~ a + I(b+c) термин b+c следует интерпретировать как сумму b и c.


Правка.Вы можете сделать это без формулы в одной команде:

plot(c(X$V1/Y$V2, X$V2/Y$V2, Y$V3/Y$V2), rep(Y$V1, 3),
    pch=20, xlim=c(0,27),
    col=rep(c("black", "red", "blue"), each=30)
)
4 голосов
/ 10 февраля 2011

Я не уверен, почему вы получаете ошибку, но использование points вместо plot для второго и третьего графика является гораздо более элегантным решением (и избавляется от этих par вызовов)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...