Использование данных CSV для расчета при использовании имен столбцов в строке формулы - PullRequest
0 голосов
/ 12 февраля 2019

Весь код ниже пытается вычислить данные в CSV, используя выражение.Но столбцы csv не распознаются, хотя я использовал row.names=1 и as.formula(expr).

expr <- "(((Blue_482/Green_557)/(RedEdge_717/Blue_482)) *((NIR_831/RedEdge_717)/(Green_557/Red_667)))"

csv <- read.csv(file=input_csv, header=TRUE, sep=",", row.names=1)
pre <- as.formula(expr)
#with(data, glm(as.formula(expr)) )
fit <- rpart(lm(pre), method="class",data=csv)

Мои данные следующие.

    SPM,Blue_482,Green_557,Red_667,RedEdge_717,NIR_831
    36,0.010417017,0.01488165,0.014811581,0.012048874,0.005534498
    36,0.009935392,0.014388976,0.014254432,0.011446002,0.005325746

Я получаю следующую ошибку.

Error in eval(parse(text = x, keep.source = FALSE)[[1L]]) : 
object 'Blue_482' not found

1 Ответ

0 голосов
/ 19 февраля 2019

Имя переменной объекта csv должно находиться перед каждым столбцом.Таким образом, код ниже работает.

expr <- "(((csv$Blue_482/csv$Green_557)/(csv$RedEdge_717/csv$Blue_482)) *((csv$NIR_831/csv$RedEdge_717)/(csv$Green_557/csv$Red_667)))"
csv <- read.csv(file=input_csv, header=TRUE, sep=",", row.names=NULL)
calculated <- (eval(parse(text = expr)))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...