Ошибка в eval (predvars, data, env): объект 'abc_East_Zone_123_asd (Tonnes / Kl)' не найден [дубликат]

Решение Pure-CSS с calc(), единицами CSS и математикой

Это точно не то, что ОП спрашивает, но может сделать чей-то день.

Я пришел, наконец, для получения чистого CSS-решения для этого, используя calc() с разными единицами. Вам понадобится некоторое базовое математическое понимание формул, чтобы выработать выражение для calc().

Когда я это проработал, мне пришлось получить отчетный заголовок с полной шириной страницы с несколькими дополнениями нескольких родителей в DOM. Я буду использовать мои значения здесь, замените их на свой.

К математике

Вам понадобится:

  • красиво скорректированное соотношение в некоторой области просмотра , Я использовал 320px, таким образом, я получил 24px высокий и 224px широкий, поэтому соотношение составляет 9.333 ... или 28/3
  • ширина контейнера, у меня была padding: 3em и полная ширина, так что это дошло до 100wv - 2 * 3em

X - это ширина контейнера, поэтому замените его собственным выражением или настройте значение, чтобы получить полнотекстовый текст. R - отношение, которое у вас будет. Вы можете получить его, отредактировав значения в каком-либо окне просмотра, проверив ширину и высоту элемента и заменив их собственными значениями. Кроме того, это width / heigth;)

x = 100vw - 2 * 3em = 100vw - 6em
r = 224px/24px = 9.333... = 28 / 3

y = x / r
  = (100vw - 6em) / (28 / 3)
  = (100vw - 6em) * 3 / 28
  = (300vw - 18em) / 28
  = (75vw - 4.5rem) / 7

И звук! Это сработало! Я написал

font-size: calc((75vw - 4.5rem) / 7)

в свой заголовок, и он прекрасно поменялся в каждом окне просмотра.

Но как это работает?

Нам нужны некоторые константы здесь. 100vw означает полную ширину окна просмотра, и моя цель состояла в том, чтобы установить заголовок полной ширины с некоторым дополнением.

Отношение. Получение ширины и высоты в одном окне просмотра показало мне соотношение, с которым можно играть, и с коэффициентом я знаю, какая высота должна быть в другой ширине видового экрана. Вычисление их вручную потребует много времени и, по крайней мере, возьмет много полос пропускания, так что это не очень хороший ответ.

Заключение

Интересно, почему никто не понял это, а некоторые люди даже говорят, что это невозможно будет переделать с помощью CSS. Я не люблю использовать Javascript в настройке элементов, поэтому я не принимаю ответы JS или даже jQuery, не копая больше. В целом, хорошо, что это выяснилось, и это один шаг к реализации чистых CSS в дизайне сайтов.

Извиняюсь за любое необычное соглашение в моем тексте, я не являюсь носителем языка на английском, а также совершенно новым для написания SO-ответов.

Edit: следует также отметить, что мы имеют злые полосы прокрутки в некоторых браузерах. Например, при использовании Firefox я заметил, что 100vw означает полную ширину окна просмотра, проходящую под полосой прокрутки (где контент не может расширяться!), Поэтому текст ширины полосы пропускания должен быть тщательно окрашен и желательно проходить тестирование со многими браузерами и устройствами.

3
задан Matt O'Brien 29 January 2016 в 01:16
поделиться

2 ответа

Итак, короче говоря, это была очень ошибка новобранец, я вводил матрицу, а не data.frame, которая вызывала эту ошибку. Почему он жаловался на этот конкретный столбец (который был не первым) по сравнению с другим, я до сих пор не понимаю. Спасибо за помощь. Приветствия, Энтони

-1
ответ дан AHawks 18 August 2018 в 02:53
поделиться
  • 1
    при создании / литье data.frame, check.names = TRUE. Таким образом, ввод data.frame мог устранить проблемы, поскольку незаконные col.names были бы отредактированы. В общем случае RandomForest дает гораздо меньше проблем с data.frame, чем матрица – Soren Havelund Welling 29 January 2016 в 13:29
  • 2
    Это не ответ, а комментарий к реальному ответу, который должен быть отмечен как принятый. – Cath 2 July 2018 в 07:49

Я подозреваю, что это происходит из-за наличия недопустимого имени переменной в вашем фрейме данных. Рассмотрим кадр данных, который имеет только переменную ответа resp и переменную (нелегально) с именем PCNA-AS1:

(dat <- structure(list(`PCNA-AS1` = c(1, 2, 3), resp = structure(c(2L, 2L, 1L), .Label = c("0", "1"), class = "factor")), .Names = c("PCNA-AS1", "resp"), row.names = c(NA, -3L), class = "data.frame"))
#   PCNA-AS1 resp
# 1        1    1
# 2        2    1
# 3        3    0

Теперь, когда мы тренируем случайный лес, получаем указанную ошибку:

library(randomForest)
mod <- randomForest(resp~., data=dat)
# Error in eval(expr, envir, enclos) : object 'PCNA-AS1' not found

Естественным решением этой проблемы было бы преобразование ваших имен переменных во все, что было бы законным:

names(dat) <- make.names(names(dat))
dat
#   PCNA.AS1 resp
# 1        1    1
# 2        2    1
# 3        3    0
mod <- randomForest(resp~., data=dat)

Теперь модель тренируется без ошибок.

8
ответ дан josliber 18 August 2018 в 02:53
поделиться
  • 1
    Спасибо за ваш комментарий Josilber, я попробовал конвертировать в юридические имена, но это не проблема. Ошибка была в самом деле, я дал randomForest матрицу (а не кадр данных), которую я предположил, не имеет значения и что randomForest может легко преобразовать между ними. Но я ошибся, поэтому я решил проблему сейчас. – AHawks 29 January 2016 в 04:20
  • 2
    @AHawks OK, то тем более вам нужно изменить свой вопрос, чтобы сделать его воспроизводимым! (например, код и данные, необходимые для репликации проблемы). Попробуйте сократить столбцы в вашем кадре данных до наименьшего числа, где вы можете воспроизвести проблему, а затем опубликовать этот набор данных (если вы еще не выяснили, что происходит в первую очередь). – josliber♦ 29 January 2016 в 04:21
  • 3
    Да, вы определенно верны, это было бы лучше, и я буду делать это для будущих вопросов, просто привыкая к тому, чтобы представлять проблемы здесь при переполнении стека, поэтому спасибо за ваши советы! – AHawks 31 January 2016 в 23:02
Другие вопросы по тегам:

Похожие вопросы: