Сумма последовательности столбцов внутри конвейера [дубликат]

Посмотрите на этот пример:

var app = angular.module('plunker', []);

app.controller('MainCtrl', function($scope,$http) {

    var getJoke = function(){
        return $http.get('http://api.icndb.com/jokes/random').then(function(res){
            return res.data.value;  
        });
    }

    getJoke().then(function(res) {
        console.log(res.joke);
    });
});

Как вы можете видеть, getJoke возвращает разрешенное обещание (оно разрешено при возврате res.data.value). Таким образом, вы ждете, пока запрос $ http.get не будет завершен, а затем выполнится console.log (res.joke) (как обычный асинхронный поток).

Это plnkr:

http://embed.plnkr.co/XlNR7HpCaIhJxskMJfSg/

39
задан leoluyi 10 December 2014 в 07:25
поделиться

4 ответа

Это скорее обходной путь, но его можно использовать

iris %>% mutate(sumVar = rowSums(.[1:4]))

Как написано в комментариях, вы также можете использовать select внутри мутанта, чтобы получить столбцы, которые вы хотите суммировать например,

iris %>% 
  mutate(sumVar = rowSums(select(., contains("Sepal")))) %>% 
  head 

или

iris %>% 
  mutate(sumVar = select(., contains("Sepal")) %>% rowSums()) %>% 
  head
68
ответ дан docendo discimus 28 August 2018 в 00:43
поделиться

Более сложным способом будет:

 iris %>% select(Sepal.Length:Petal.Width) %>%
mutate(sumVar = rowSums(.)) %>% left_join(iris)
10
ответ дан Davide Passaretti 28 August 2018 в 00:43
поделиться

Я использую это простое решение, которое является более надежной модификацией ответа Давида Пассаретти:

iris %>% select(Sepal.Length:Petal.Width) %>%
  transmute(sumVar = rowSums(.)) %>% bind_cols(iris, .)

(Но для этого требуется определенный порядок строк, что должно быть хорошо, если вы не работаете возможно, с удаленными наборами данных.)

0
ответ дан Melkor.cz 28 August 2018 в 00:43
поделиться

Добавление комментария @ docendodiscimus в качестве ответа. +1 к нему!

iris %>% mutate(sumVar = rowSums(select(., contains("Sepal"))))
5
ответ дан psychonomics 28 August 2018 в 00:43
поделиться
Другие вопросы по тегам:

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