Проверить, содержит ли вектор данный элемент

Теперь как метод расширения:

public static class LinqExt
{
    public static IEnumerable<TResult> LeftOuterJoin<TLeft, TRight, TKey, TResult>(this IEnumerable<TLeft> left, IEnumerable<TRight> right, Func<TLeft, TKey> leftKey, Func<TRight, TKey> rightKey,
        Func<TLeft, TRight, TResult> result)
    {
        return left.GroupJoin(right, leftKey, rightKey, (l, r) => new { l, r })
             .SelectMany(
                 o => o.r.DefaultIfEmpty(),
                 (l, r) => new { lft= l.l, rght = r })
             .Select(o => result.Invoke(o.lft, o.rght));
    }
}

Используйте, как обычно, вы используете join:

var contents = list.LeftOuterJoin(list2, 
             l => l.country, 
             r => r.name,
            (l, r) => new { count = l.Count(), l.country, l.reason, r.people })

Надеемся, что это сэкономит вам некоторое время.

467
задан zx8754 9 May 2018 в 09:33
поделиться

3 ответа

Для этого предназначены функции match () (возвращает первое появление) и % в% (возвращает логическое значение).

v <- c('a','b','c','e')

'b' %in% v
## returns TRUE

match('b',v)
## returns the first location of 'b', in this case: 2
473
ответ дан 22 November 2019 в 22:45
поделиться

Вы можете использовать оператор % в% :

vec <- c(1, 2, 3, 4, 5)
1 %in% vec # true
10 %in% vec # false
34
ответ дан 22 November 2019 в 22:45
поделиться

Функция any () делает код читаемым

> w <- c(1,2,3)
> any(w==1)
[1] TRUE

> v <- c('a','b','c')
> any(v=='b')
[1] TRUE

> any(v=='f')
[1] FALSE
66
ответ дан 22 November 2019 в 22:45
поделиться
Другие вопросы по тегам:

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