«Ошибка в parse_url (url): длина (url) == 1 не соответствует ДЕЙСТВИТЕЛЬНОСТИ», когда я использую sapply

#r #api #sapply

#r #API #sapply

Вопрос:

Я создал функцию для вызова API, но у меня проблема с длиной (url). Я упростил свой код следующим образом, чтобы показать проблему:

 
library(jsonlite)
library(httr)

df<-data.frame("names"=c("20523717759","20555589574"))
calling<- function(x){
  url1<-paste("https://api.sunat.cloud/ruc/",x,sep = "", collapse = NULL)
  url1
  res<- GET(url1)
  }

sapply(df,calling)
  

У меня следующая ошибка:
Error in parse_url(url) : length(url) == 1 is not TRUE
Обратная трассировка такова:

 13.
stop(simpleError(msg, call = if (p <- sys.parent(1L)) sys.call(p))) 
12.
stopifnot(length(url) == 1) 
11.
parse_url(url) 
10.
is.url(url) 
9.
stopifnot(is.url(url)) 
8.
build_url(parse_url(url)[c("scheme", "hostname", "port")]) 
7.
handle_name(url) 
6.
handle_find(url) 
5.
handle_url(handle, url, ...) 
4.
GET(url1) 
3.
FUN(X[[i]], ...) 
2.
lapply(X = X, FUN = FUN, ...) 
1.
sapply(df, calling) 


  

Как я могу изменить «вызов» моей функции, чтобы применить ее к моему df? Спасибо!

Ответ №1:

Здесь нам может потребоваться извлечь столбец «имена», а затем использовать

 sapply(df$names, calling)
  

Комментарии:

1. Спасибо, парень. Это работает отлично.