Заменить значения в тибле в R 4.0 - PullRequest
3 голосов
/ 26 апреля 2020

Я только что обновился до R 4.0.0 с R 3.6.2, и некоторые функции, которые я использую для замены значений в таблице, больше не работают. Я не могу найти то, что мне нужно сделать сейчас. Кто-нибудь знает "новый" способ?

library(tidyverse)
v <- c(1, 2, 3)
w <- c(4, 4)
i <- 1

# Does not work anymore
df <- tibble(a = v, b = v, c = v)
df[i, 2:3] <- w

# This used to work with tibbles
df.old <- data.frame(a = v, b = v, c = v)
df.old[i, 2:3] <- w

Это ошибка, которую я получаю с тибблом:

Error: Assigned data `w` must be compatible with row subscript `i`.
x 1 row must be assigned.
x Assigned data has 2 rows.
i Only vectors of size 1 are recycled.

Спасибо,

1 Ответ

4 голосов
/ 26 апреля 2020

В моей версии R-devel сообщение об ошибке включает в себя

ℹ Row updates require a list value. Do you need `list()` or `as.list()`?

Таким образом, канонический путь в этой версии, вероятно, df[i, 2:3] <- as.list(w), который работает:

library(tidyverse)
v <- c(1, 2, 3)
w <- c(4, 4)
i <- 1

df <- tibble(a = v, b = v, c = v)
df[i, 2:3] <- as.list(w)
df
#> # A tibble: 3 x 3
#>       a     b     c
#>   <dbl> <dbl> <dbl>
#> 1     1     4     4
#> 2     2     2     2
#> 3     3     3     3

Создано в 2020-04-26 пакетом Представления (v0.3.0)

...