> ## Documentation Index
> Fetch the complete documentation index at: https://docs.x.com/llms.txt
> Use this file to discover all available pages before exploring further.

# R과 X API v2 시작하기

> httr 및 jsonlite를 사용하여 R에서 X API v2 user lookup 엔드포인트를 호출하는 튜토리얼. bearer 토큰 설정 및 R에서 JSON 응답 파싱을 다룹니다.

## 소개

이 튜토리얼은 프로그래밍 언어 R과 X API v2를 시작하는 데 필요한 내용을 안내합니다.
R을 사용하여 [user lookup](/x-api/users/lookup/introduction) 엔드포인트에 연결하여 X API가 반환하는
JSON으로 작업하는 방법을 보여드립니다. user lookup은 GET 메서드이며, 사용자 ID 또는 사용자 이름으로 지정된
사용자 또는 사용자 그룹에 대한 정보를 반환합니다.

익숙하지 않다면, R은 시계열 분석, 모델링, 시각화 및 기타 데이터 분석과 같은 일반적인 데이터
사이언스 작업에서 가장 인기 있는 언어 중 하나이며, X API와 함께 자주 사용됩니다. user
lookup 엔드포인트를 사용하면 [user 객체](/x-api/fundamentals/data-dictionary/reference#user)를 사용해
사람의 팔로워 수와 프로필의 감성 점수 간의 상관관계를 파악할 수 있습니다. user 객체는 프로필에 공개적으로 표시된 위치를 기반으로
계정 그룹을 매핑하는 데에도 사용할 수 있습니다.

### X API 시작하기

X API v2를 사용하려면 먼저 [개발자 계정에 가입](https://developer.x.com/en/portal/petition/essential/basic-info)해야 합니다.

승인된 개발자 계정이 있으면 먼저 [Project](/resources/fundamentals/developer-apps)를 만들어야 합니다.
Project를 사용하면 X API를 어떻게 사용할 의도인지에 따라 작업을 조직화하여, API 액세스를 효과적으로 관리하고
사용량을 모니터링할 수 있습니다.

각 Project에는 X API를 사용하는 데 필요한 자격 증명을 생성할 수 있는 [App](/resources/fundamentals/developer-apps)이 있습니다.
X API를 시작하는 방법에 대한 자세한 내용은 문서의 [시작하기](/x-api/getting-started/about-x-api) 섹션에서 확인할 수 있습니다.

### R 환경 설정하기

먼저 [R을 다운로드](https://cloud.r-project.org/)해야 하며, [cran 웹사이트](https://cran.r-project.org/)에서 할 수 있습니다.

이후 R로 작업할 환경을 설정하려면 [R studio](https://www.rstudio.com/), [Visual Studio Code용 R 확장팩](https://marketplace.visualstudio.com/items?itemName=Ikuyadeu.r-pack),
또는 Python 세계에서 왔다면 [Jupyter notebook](https://docs.anaconda.com/anaconda/navigator/tutorials/r-lang/)을 사용할 수 있습니다.

### 환경 변수 설정하기

오늘 보여드릴 코드 예제에서는 bearer 토큰에 대한 환경 변수를 만들어야 합니다.
Bearer Token은 X API에 인증하고 요청을 시작할 수 있게 해주는 것입니다. 먼저
"your-bearer-token"을 자신의 bearer 토큰으로 바꾸세요. 이 토큰은 Developer Console의 App에서 keys and tokens
섹션에서 얻을 수 있습니다. 스크립트를 작성하기 전에 콘솔에서 이 코드 한 줄을 실행해야 합니다.

```r theme={null}
Sys.setenv(BEARER_TOKEN = "your-bearer-token")
```

### 요청하기

X API에 HTTP 요청을 하기 위해 [httr](https://cran.r-project.org/web/packages/httr/index.html) 패키지를 사용할 수 있습니다.
아직 설치하지 않았다면 콘솔에서 패키지를 설치하세요. JSON 객체로 작업하려면
[jsonlite](https://cran.r-project.org/web/packages/jsonlite/index.html)를, 데이터 조작을 위해
[dplyr](https://dplyr.tidyverse.org/)도 설치해야 합니다.

```r theme={null}
install.packages("httr")
install.packages("jsonlite")
install.packages("dplyr")
```

이제 API에 연결하는 R 스크립트 작성을 시작할 수 있습니다. 파일 상단에서 httr, jsonlite, dplyr 패키지를 호출합니다.

```r theme={null}
require(httr)
require(jsonlite)
require(dplyr)
```

코드 샘플의 첫 번째 단계는 X API에 인증하도록 설정하는 것입니다. App에서 가져온
[Bearer Token](/resources/fundamentals/authentication#using-and-generating-an-app-only-bearer-token)을 가져와서 인증을 위해 헤더에 전달하세요.
아래 예시에서 \$BEARER\_TOKEN을 자신의 토큰으로 바꾸세요.

```r theme={null}
bearer_token <- Sys.getenv("$BEARER_TOKEN")
headers <- c(`Authorization` = sprintf('Bearer %s', bearer_token))
```

인증 설정을 마쳤다면 요청의 파라미터를 정의하세요. 기본적으로 반환되는 각 사용자의
id, name, username을 받게 됩니다. [필드](/x-api/fundamentals/fields)와
[expansions](/x-api/fundamentals/expansions)를 추가하여 이 페이로드를 조정할 수 있습니다. 이 예시에서는
user.fields=description을 사용해 사용자의 프로필 bio를 요청하고, 사용자의 고정된 Post를 포함하는 expansion을 사용합니다.

```r theme={null}
params <- list(`user.fields` = 'description', `expansions` = 'pinned_tweet_id')
```

이제 자세한 정보를 알고 싶은 X 핸들(계정으로도 알려짐)로 URL을 포맷할 준비가 되었습니다.
readline 메서드를 사용하여 이 샘플을 재사용 가능하게 만드세요. 살펴보고 싶은 핸들을 입력한 후, \$USERNAME을
원하는 X 핸들로 바꾸어 URL을 정의한 핸들이 포함되도록 포맷합니다.

```r theme={null}
handle <- readline('$USERNAME')
url_handle <- sprintf('https://api.x.com/2/users/by?usernames=%s', handle)
```

이 시점에서 httr 패키지를 사용하여 방금 만든 URL에 GET 요청을 하고, 헤더를 통해
인증 자격 증명을 전달하며, 정의한 파라미터를 전달하세요. 응답을 obj 변수에 텍스트 객체로 저장하고
이를 출력하여 요청 결과를 확인할 수 있습니다.

```r theme={null}
response <-
  httr::GET(url = url_handle,
    httr::add_headers(.headers = headers),
    query = params)
obj <- httr::content(response, as = "text")
print(obj)
```

### JSON 페이로드로 작업하기

JSON으로 작업하는 제가 가장 좋아하는 방법 중 하나는 복잡하게 중첩된 데이터에 쉽게 접근할 수 있는 데이터 프레임을 사용하는 것입니다.
이를 위해 jsonlite 패키지의 fromJSON 메서드를 사용하여 파일을 평탄화(flatten)해 필드가 동일한 객체에 오도록 합니다.
그런 다음 해당 객체를 데이터 프레임으로 전달합니다. 이제 이 데이터 프레임을 볼 준비가 되었습니다.

```
json_data <- fromJSON(obj, flatten = TRUE) %>% as.data.frame View(json_data)
```

데이터 프레임에서 데이터의 필드에 접근하여 핸들, 사용자 이름, bio가 포함된 문자열로 전달할 수 있습니다.

```r theme={null}
final <-
  sprintf(
    "Handle: %s\nBio: %s\nPinned Post: %s",
    json_data$data.username,
    json_data$data.description,
    json_data$includes.tweets.text
  )
```

가져오는 각 필드 사이에 줄바꿈이 있는 상태로 객체를 보려면 print 대신 cat을 사용하세요.

```r theme={null}
cat(final)
```

여러 핸들에 대해 요청한 경우, 각 데이터 프레임 요소에 쉽게 접근하기 위해 반복문을 사용할 수 있습니다.

### 결론

이 튜토리얼이 R과 X API로 작업을 시작하는 출발점이 되기를 바랍니다. 다음 단계로는
[v2 샘플 코드](https://github.com/xdevplatform)에서 recent search, Post lookup, user lookup에 대한
R 샘플을 살펴보시는 것이 좋습니다. 도중에 문제가 발생하면 [포럼](https://devcommunity.x.com/)에 알려주시거나,
이 튜토리얼이 무언가를 만들도록 영감을 주었다면 [@XDevelopers](https://x.com/XDevelopers)에 Post해 주세요.
