文字列操作関数
CoddyのRジャーニー「基礎」セクションの一部 — レッスン 66/78。
文字列を文字に分割する方法を学んだので、次はRで文字列を操作するためのいくつかの重要な関数を見ていきましょう。これらの関数は、テキストデータの長さを測ったり、結合したり、変換したりするのに役立ちます。
nchar() 関数は、文字列の文字数を返します:
word <- "hello"
print(nchar(word))出力:
[1] 5複数の文字列を1つに結合するには、paste()を使用します。デフォルトでは、要素をスペースで区切ります:
result <- paste("Hello", "World")
print(result)出力:
[1] "Hello World"文字列の間に区切り文字を入れたくない場合は、paste0()を使用してください:
result <- paste0("Hello", "World")
print(result)出力:
[1] "HelloWorld"大文字・小文字の変換には、Rはtoupper()とtolower()を提供しています:
print(toupper("hello"))
print(tolower("WORLD"))出力:
[1] "HELLO"
[1] "world"これらの関数は、これまでに学んだ反復技法と組み合わせることで強力なものとなり、テキストを1文字ずつ、あるいは文字列全体として処理・変換できるようになります。
チャレンジ
簡単2行の入力を受け取ります:
- 名(例:
john) - 姓(例:
SMITH)
以下の操作を実行してください:
toupper()を使用して、名を大文字に変換しますtolower()を使用して、姓を小文字に変換しますpaste()を使用して、それらをフルネームに結合します(間にスペースを入れます)nchar()を使用して、フルネームの合計文字数(スペースを含む)を計算しますpaste0()を使用して、名と姓を区切り文字なしで結合し、すべて小文字のユーザー名を作成します- フルネームを出力します
- 文字数を出力します
- ユーザー名を出力します
例えば、入力が以下の場合:
alice
WONDER出力は以下のようになります:
[1] "ALICE wonder"
[1] 12
[1] "alicewonder"説明:名 "alice" は "ALICE"(大文字)になり、姓 "WONDER" は "wonder"(小文字)になります。フルネーム "ALICE wonder" は12文字(スペースを含む)です。ユーザー名は両方の名前を小文字で区切り文字なしで結合した "alicewonder" になります。
チートシート
nchar()関数は、文字列内の文字数を返します:
word <- "hello"
print(nchar(word)) # 出力: [1] 5paste()関数は、デフォルトで複数の文字列をスペース区切りで結合します:
result <- paste("Hello", "World")
print(result) # 出力: [1] "Hello World"paste0()関数は、区切り文字なしで文字列を結合します:
result <- paste0("Hello", "World")
print(result) # 出力: [1] "HelloWorld"toupper()関数は文字列を大文字に変換し、tolower()は小文字に変換します:
print(toupper("hello")) # 出力: [1] "HELLO"
print(tolower("WORLD")) # 出力: [1] "world"自分で試してみよう
# 入力を読み込む
con <- file("stdin", "r")
first_name <- suppressWarnings(readLines(con, n = 1))
last_name <- suppressWarnings(readLines(con, n = 1))
close(con)
# TODO: 以下にコードを記述してください
# 1. toupper() を使用して first_name を大文字に変換する
# 2. tolower() を使用して last_name を小文字に変換する
# 3. paste() を使用してそれらを full_name に結合する
# 4. nchar() を使用して文字数を計算する
# 5. paste0() を使用して username を作成する (すべて小文字)
# 結果を出力する
print(full_name)
print(char_count)
print(username)このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。