Мы можем определить функцию, которая находит положение факторной переменной, которая при использовании в качестве регулярного выражения находит совпадение в столбце code
:
find_match <- function(code, matches) {
apply(sapply(matches, grepl, code), 1, match, x=T)
}
Если совпадения нет, эта функция возвращает NA
для этой строки.
Далее, мы можем просто использовать mutate
из dplyr
, чтобы добавить каждый столбец факторов:
df %>% mutate(goal = find_match(code, goal),
area = find_match(code, area),
fr = find_match(code, fr))
Что дает:
var1 var2 code goal area fr
1 1 a goal\\\\meow 2 NA NA
2 2 b area\\\\bank NA 3 NA
3 3 c area\\\\bank NA 3 NA
4 4 d fr\\\\utilitarian NA NA 3
5 5 e fr\\\\history NA NA 2
Cython мог бы это сделать - код C, который он генерирует, предназначен для расширений Python, но все это можно упаковать, и вы будете всегда запускать нативный код (после 'import' ;-) .
Также найдено сегодня Delight применяет синтаксис Python на D-сервере.
И тоже сходятся .
shedskin компилирует Python в C ++
Со страницы проекта shedskin
Shed Skin - экспериментальный компилятор, который может переводить чистый, но неявно статически типизированный Python. программы в оптимизированный C ++. Он может генерировать автономные программы или модули расширения, которые можно импортировать и использовать в более крупных программах Python.
Вы можете найти все ранее упомянутые языки, а также некоторые другие, здесь: http://wiki.python.org/moin/PythonImplementations
Если вас устраивает что-то, что компилируется до байт-кода Java, вы можете взглянуть на Jython . Цитата из их FAQ :
JPython - это реализация языка программирования Python, разработанная для работы на платформе Java (tm). Он состоит из компилятора для компиляции исходного кода Python до байт-кода Java, который может работать непосредственно на JVM, набора вспомогательных библиотек, которые используются скомпилированными байт-кодами Java, и дополнительной поддержки, позволяющей упростить использование пакетов Java из JPython. .
На самом деле я еще не использовал его, но рассматриваю его в некоторых проектах, где мне нужно интегрироваться с существующей кодовой базой Java.
HTH
Вы также можете изучить IronPython - реализацию Python на платформе .NET
Я должен признать, что не совсем понимаю ваш вопрос по двум причинам:
Вы запрашиваете язык с генерацией собственного кода, но генерация собственного кода не имеет ничего общего с язык, это черта реализации. Каждый язык может иметь реализацию с генерацией собственного кода. Некоторые реализации Python имеют генерацию собственного кода. Существуют компиляторы C, которые компилируются в байт-код JVM, байт-код CIL или даже исходный код ECMAScript. Есть даже интерпретаторы C . Существуют также компиляторы, которые компилируют исходный код Java или байт-код JVM в собственный код.
Почему вас волнует синтаксис? Вероятно, это наименее важный фактор при выборе языка программирования.
В любом случае,
PyPy - это проект по повторной реализации Python в Python. Одна из его целей - разрешить использование нескольких бэкэндов, включая C. Таким образом, вы можете взять чистую программу Python, преобразовать ее в C и скомпилировать в собственный код. Работа над ним все еще продолжается, поэтому, вероятно, он не подходит для производственного кода.
Genie, который является частью проекта гнома: http://live.gnome.org/Genie
Думаю, это именно то, что вы ищете.
Ознакомьтесь с Cobra
На него сильно повлияли Python, C #, Eiffel, Objective-C и другие языки программирования. Он поддерживает как статическую, так и динамическую типизацию. Он имеет первоклассную поддержку модульных тестов и контрактов. Cobra обеспечивает быстрое развитие и производительность на одном языке.