Rのtibbleはdata.frameのように直接個別の値を編集する方法は提供されていないが、mutate
関数を用いて、既存の値の更新を行うことができる。
まず、data.frameの場合では、以下のように値を編集できる。
# データフレームの作成
my.data <- data.frame(x=c(1:5),
y=c(letters[1:4], NA),
stringsAsFactors = FALSE)
my.data
x y
1 1 a
2 2 b
3 3 c
4 4 d
5 5 <NA>
# `my.data`の5行2列目に、文字列"e"を代入する。
my.data[5,2] <- "e"
my.data
x y
1 1 a
2 2 b
3 3 c
4 4 d
5 5 e
tibbleの場合、行、列を指定して代入することはできないが、case_when
にて対象となるセルを指定して、mutate
で列ごと更新する。
# tibbleの作成
my.data <- tibble::tibble(x=c(1:5), y=c(letters[1:4], NA))
my.data
# A tibble: 5 x 2
x y
<int> <chr>
1 1 a
2 2 b
3 3 c
4 4 d
5 5 NA
# これはエラーになる
# my.data[5,2] <- "e"
my.data <- my.data %>%
dplyr::mutate(y=dplyr::case_when(x==5 ~ "e",
TRUE ~ y))
my.data
# A tibble: 5 x 2
x y
<int> <chr>
1 1 a
2 2 b
3 3 c
4 4 d
5 5 e