R сюжетный текст: как добавить обычный текстовый префикс к полиному, представленному в форме экспоненты (не ^) - PullRequest
0 голосов
/ 25 июня 2019

Я пытаюсь добавить этот текст к графику: «Модель: y = 1 + 2x - 3x ^ 2 + 4x ^ 3», где фактические показатели отображаются как таковые (без ^ символов).(Смотрите скриншот)

Ниже приведен код репро.Первый вызов text () работает нормально (без предопределенного обычного текста), а второй - нет (с предварительно добавленным текстом).(Выполните soTest () для воспроизведения.)

Есть предложения?Я думаю, я не знаю, какие ключевые слова R искать, чтобы найти решение.Любая помощь будет оценена!(Прошу прощения за верблюжий корпус, я пишу слайд-колоду для аудитории, по крайней мере, с несколькими не-R кодерами.)

evalPoly <- function( x, coeff ) {
    if ( length( coeff ) < 1 ) return( c(0) )   
    termSum <- 0
    for ( i in 1:length(coeff) ) {
        termSum <- termSum + coeff[i] * x^(i-1)
    }
    return( termSum )
}

soTest <- function() {
    coeff <- c( 1, 2, -3, 4 )
    x <- 1:8
    y <- evalPoly( x, coeff )
    plot( x, y )
    text( 2, 1600, parse( text="1+2*x-3*x^2+4*x^3" ), adj=0 )
    text( 2, 1400, parse( text="Model:  y = 1+2*x-3*x^2+4*x^3" ), adj=0 )
}

resulting plot

Ответы [ 2 ]

1 голос
/ 26 июня 2019

Я понял это. По-видимому, знак «=» необходимо экранировать следующим образом: «==». Вот новая функция soTest (), а также полученный скриншот. Оно работает. Спасибо тем, кто потратил время на этот вопрос.

soTest2 <- function() {
    coeff <- c( 1, 2, -3, 4 )
    x <- 1:8
    y <- evalPoly( x, coeff )
    plot( x, y )
    text( 2, 1600, parse( text="1+2*x-3*x^2+4*x^3" ), adj=0 )
    text( 2, 1400, parse( text="Model:  y == 1+2*x-3*x^2+4*x^3" ), adj=0 )
}

enter image description here

1 голос
/ 25 июня 2019

Вам нужно вытянуть простой текст за пределы оператора синтаксического анализа.

text( 2, 1400, paste("Model:  y =", parse( text="1+2*x-3*x^2+4*x^3" )), adj=0 )
...