Вот базовое решение R
elementdf[apply(elementdf[,-1], 1, function(x) all(x %in% nodedf$nid)),]
Объяснение:
apply
работает путем «применения» функции (в данном случае пользовательской) к каждой строке (переменной x
в функции) объекта elementdf
. Если бы мы хотели сделать это по столбцам, мы бы изменили 1
на 2
.
Используемая нами функция просматривает каждый элемент в x
(строка в elementdf
) и проверяет, находится ли он также в nodedf
. %in%
- это специальная функция, которая возвращает вектор логики, элемент для каждого в x
. Функция all
возвращает TRUE
, если все элементы равны TRUE
(имеется в виду, что все они в nodedf
), а FALSE
в противном случае.
Таким образом, в конце оператор apply вернет вектор логики, в зависимости от того, есть ли в каждой строке элементы, найденные в nodedf
.
Чтобы получить значения в каждой строке, которых нет в nodedf
, вы можете сделать
apply(elementdf[,-1], 1, function(x) x[!(x %in% nodedf$nid)])
, что, как вы заметите, уже очень похоже на строку кода выше. За исключением этого случая, оператор apply
вернет список. Из приведенного вами примера это будет список длины 2, где первый элемент - numeric(0)
, а второй - вектор, содержащий 7. Если у вас есть несколько нарушителей в одной строке, будет показан каждый из них.
Чтобы удалить строки в nodedf
, которые не имеют ссылок в elementdf
, вы можете сделать
nodedf[nodedf$nid %in% unique(unlist(elementdf[,-1])),]
Часть unique(unlist(...))
просто захватывает все уникальные значения в elementdf[,-1]
], преобразуя их в числовой вектор.
Взято из Как создать шаблон проверки SVN Tortoise (изменен для соответствия более современным версиям):
Шаблон журнала можно настроить в соответствии с требованиями проекта и может использоваться для реализации строгого формата журнала.
Добавить это в репозиторий svn легко:
Выберите папку SVN, к которой вы хотите применить это, перейдите в свойства Subversion (щелкните правой кнопкой мыши
TortoiseSVN -> Свойства
)Выберите
Новый -> Расширенный
, затемtsvn: logtemplate
из раскрывающегося списка с именемИмя свойства
.Добавьте указанное выше шаблоны (или ваши собственные) в текстовую область под полем со списком.
Если вы хотите применить свойство к каждому файлу и папке в иерархии под текущей папкой, установите флажок Рекурсивно.
Нажмите
ОК
, чтобы добавить это свойство в список.Отметьте все папки и файлы, чтобы все остальные в вашей команде могли использовать тот же шаблон.
Один из способов сделать это с помощью командной строки - изменить переменную среды SVN_EDITOR, описанную здесь:
http://svn.haxx.se/dev/archive-2006-02/ 0487.shtml
SVN_EDITOR="rm svn-commit.tmp && cp $REPOS/hooks/log.tmpl svn-commit.tmp && vi svn-commit.tmp"