Извлечь список строк в R [дубликат]

Angular1

Для людей, которые используют AngularJS , может справиться с этой ситуацией, используя Promises.

Здесь it говорит,

Обещания могут использоваться для отключения асинхронных функций и позволяют объединять несколько функций вместе.

blockquote>

Вы можете найти приятное объяснение здесь .

Пример, найденный в docs , упомянутом ниже.

  promiseB = promiseA.then(
    function onSuccess(result) {
      return result + 1;
    }
    ,function onError(err) {
      //Handle error
    }
  );

 // promiseB will be resolved immediately after promiseA is resolved 
 // and its value will be the result of promiseA incremented by 1.

Angular2 and Later

In Angular2, посмотрите на следующий пример, но его рекомендовал использовать Observables с Angular2.

 search(term: string) {
     return this.http
  .get(`https://api.spotify.com/v1/search?q=${term}&type=artist`)
  .map((response) => response.json())
  .toPromise();

}

Вы можете использовать это таким образом,

search() {
    this.searchService.search(this.searchField.value)
      .then((result) => {
    this.result = result.artists.items;
  })
  .catch((error) => console.error(error));
}

См. здесь оригинал . Но TypScript не поддерживает native es6 Promises , если вы хотите его использовать, для этого вам может понадобиться плагин.

Кроме того, здесь представлены обещания spec определите здесь.

2
задан Brian P 22 March 2015 в 17:24
поделиться

3 ответа

[Д0] 1. stringr

Мы могли бы сначала подмножить «text.df», используя «indx» (сформированный из свертывания вектора стран) как шаблон в «grep», а затем использовать «str_extract», чтобы получить элементы шаблона из столбца «текст» присвойте этому столбцу «текст» набора данных подмножества («text.df1»)

library(stringr)
indx <- paste(countries, collapse="|")
text.df1 <- text.df[grep(indx, text.df$text),]
text.df1$text <- str_extract(text.df1$text, indx)
text.df1
#  ID          text
#1  1 United States
#4  4        Israel
#5  5        Canada

2. base R

Без использования каких-либо внешних пакетов мы можем удалить символы, отличные от символов, найденных в 'ind'

text.df1$text <- unlist(regmatches(text.df1$text, 
                           gregexpr(indx, text.df1$text)))

3. stringi

Мы могли бы также использовать более быструю stri_extract из stringi

library(stringi)
na.omit(within(text.df, text1<- stri_extract(text, regex=indx)))[-2]
#  ID         text1
#1  1 United States
#4  4        Israel
#5  5        Canada
3
ответ дан akrun 28 August 2018 в 01:08
поделиться

Создайте шаблон p и используйте strapply, чтобы извлечь соответствие каждому компоненту text, возвратившему NA для каждого непревзойденного компонента. Наконец, удалите значения NA с помощью na.omit. Это не разрушительно (т. Е. text.df не изменяется):

library(gsubfn)

p <- paste(countries, collapse = "|")
na.omit(transform(text.df, text = strapply(paste(text), p, empty = NA, simplify = TRUE)))

, давая:

  ID          text
1  1 United States
4  4        Israel
5  5        Canada

Используя dplyr, он также может быть записан следующим образом (используя p сверху):

library(dplyr)
library(gsubfn)

text.df %>% 
  mutate(text = strapply(paste(text), p, empty = NA, simplify = TRUE)) %>%
  na.omit
3
ответ дан G. Grothendieck 28 August 2018 в 01:08
поделиться

Вот подход с data.table:

library(data.table)
##
R>  data.table(text.df)[
    sapply(countries, function(x) grep(x,text),USE.NAMES=F),
    list(ID, text = countries)]
   ID          text
1:  1 United States
2:  4        Israel
3:  5        Canada
3
ответ дан nrussell 28 August 2018 в 01:08
поделиться
Другие вопросы по тегам:

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