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 行是良性的。
But the x
不是良性的。如果我将它包含在类似的 mtcars 代码(如下)中,我会收到错误而不是“TRUE”。你能解释一下吗?我从未见过如此神秘的x
之前的语法,这并不意味着它不重要(或常见)。
identical(mtcars %>% .[1:2, ],
mtcars %>% .x[1:2, ])
# Error in `[.data.frame`(., .x, 1:2, ) : object '.x' not found