df1 <- data.frame(
" " = c(" ", "Part Number 1", "Part Number 2", "Part Number 3"),
Julie = c("Measurement 1", 33, 34, 33),
Julie = c("Measurement 2", 32, 31, 31),
Joe = c("Measurement 1", 33, 33, 30),
Joe = c("Measurement 2", 31, 32, 31))
df1 %>%
mutate_all(as.character) %>%
set_names(c("Part", paste(names(.)[2:ncol(.)], .[1, 2:ncol(.)], sep = "-"))) %>%
`[`(2:nrow(.), ) %>%
gather("key", "value", contains("Measurement")) %>%
separate("key", c("person", "measurement"), sep = "-") %>%
mutate_at("person", ~ stringr::str_replace(.x, "\\..*","")) # line 14
# mutate_at("person", ~ stringr::str_replace(., "\\..*","")) # line 15
Есть только одна вещь, которую я хочу выделить в приведенном выше коде, и это разница между строкой № 14 и строкой № 15. Обратите внимание, что набор конвейерных данных str_replace()
для строки # 14 равен .x
, а набор конвейерных данных для строки # 15 - просто .
. Я привык видеть вещи в виде строки № 15, и кажется, что x
в строке № 14 доброкачественно.
Но x
не доброкачественный. Если я включу его в аналогичный код mtcars (ниже), я получу ошибку вместо «ИСТИНА». Вы можете это объяснить? Я никогда раньше не видел этот загадочный синтаксис x
, что вряд ли означает, что он не важен (или распространен).
identical(mtcars %>% .[1:2, ],
mtcars %>% .x[1:2, ])
# Error in `[.data.frame`(., .x, 1:2, ) : object '.x' not found