在 magrittr 管道中打印数据框的一个元素
printing one element of a dataframe in a magrittr pipe
考虑这个简单的例子
library(dplyr)
library(glue)
library(magrittr)
> mydata <- data_frame(value = c(1,2,3))
> mydata
# A tibble: 3 x 1
value
<dbl>
1 1.
2 2.
3 3.
我想从 magrittr
管道中打印我的数据框中的列 value2
的第二个元素。
我知道我可以利用 magrittr
中的 tee
运算符,但是正如您在下面看到的,我的代码不起作用:
- 它不打印任何东西
- 它本身不提取值。 Indeed
"the second element of value2 is 1"
只是一个字符串。我还尝试了一些 glue::"the second element of {} is {}"
的变体,但没有成功。
例如,
> mydata %>% mutate(value2 = value - 1) %T>%
print('the second element of value2 is 1') %>%
summarize(count = n())
# A tibble: 3 x 2
value value2
<dbl> <dbl>
1 1. 0.
2 2. 1.
3 3. 2.
# A tibble: 1 x 1
count
<int>
1 3
知道如何以编程方式做到这一点吗?
谢谢!
使用 sprintf:
nm = "value2"
mydata %>% mutate(value2 = value - 1) %T>% {
cat(sprintf('the second element of %s is %s.\n', nm, nth(.[[nm]], 2))) } %>%
summarize(count = n())
the second element of value2 is 1.
# A tibble: 1 x 1
count
<int>
1 3
或者用胶水
nm = "value2"
mydata %>% mutate(value2 = value - 1) %T>% {
x = nth(.[[nm]], 2)
cat(glue('the second element of {nm} is {x}.\n\n')) } %>%
summarize(count = n())
the second element of value2 is 1.
# A tibble: 1 x 1
count
<int>
1 3
出于某种原因,glue
吃掉了第一个换行符 (\n
)。
{}
是必需的,因为 "egad" %T>% print("some words")
根据 magrittr 语义评估为 print("egad", "some words")
。
考虑这个简单的例子
library(dplyr)
library(glue)
library(magrittr)
> mydata <- data_frame(value = c(1,2,3))
> mydata
# A tibble: 3 x 1
value
<dbl>
1 1.
2 2.
3 3.
我想从 magrittr
管道中打印我的数据框中的列 value2
的第二个元素。
我知道我可以利用 magrittr
中的 tee
运算符,但是正如您在下面看到的,我的代码不起作用:
- 它不打印任何东西
- 它本身不提取值。 Indeed
"the second element of value2 is 1"
只是一个字符串。我还尝试了一些glue::"the second element of {} is {}"
的变体,但没有成功。
例如,
> mydata %>% mutate(value2 = value - 1) %T>%
print('the second element of value2 is 1') %>%
summarize(count = n())
# A tibble: 3 x 2
value value2
<dbl> <dbl>
1 1. 0.
2 2. 1.
3 3. 2.
# A tibble: 1 x 1
count
<int>
1 3
知道如何以编程方式做到这一点吗? 谢谢!
使用 sprintf:
nm = "value2"
mydata %>% mutate(value2 = value - 1) %T>% {
cat(sprintf('the second element of %s is %s.\n', nm, nth(.[[nm]], 2))) } %>%
summarize(count = n())
the second element of value2 is 1.
# A tibble: 1 x 1
count
<int>
1 3
或者用胶水
nm = "value2"
mydata %>% mutate(value2 = value - 1) %T>% {
x = nth(.[[nm]], 2)
cat(glue('the second element of {nm} is {x}.\n\n')) } %>%
summarize(count = n())
the second element of value2 is 1.
# A tibble: 1 x 1
count
<int>
1 3
出于某种原因,glue
吃掉了第一个换行符 (\n
)。
{}
是必需的,因为 "egad" %T>% print("some words")
根据 magrittr 语义评估为 print("egad", "some words")
。