如何在 `dplyr` 管道中使用 `stringr`
How to use `stringr` in `dplyr` pipe
我在尝试编辑 dplyr
管道中的某些字符串的代码时遇到问题。这是一些引发以下错误的数据。有什么想法吗?
data_frame(id = 1:5,
name = c('this and it pretty long is a',
'name is a',
'so and so and so and so and so',
'this is a',
'this is a variabel name'))
%>%
str_trunc(.,
string = .$name,
width = 10,
side='right',
ellipsis = '')
给我这个错误:Error in str_trunc(., string = .$name, width = 10, side = "right", ellipsis = ". . . ") : unused argument (.)
。
谢谢。
您需要mutate
或mutate_at/if/all
来更改列的内容。
data_frame(id = 1:5,
name = c('this and it pretty long is a',
'name is a',
'so and so and so and so and so',
'this is a',
'this is a variabel name')) %>%
mutate_at("name", str_trunc, width = 10, side='right', ellipsis = '')
# A tibble: 5 x 2
id name
<int> <chr>
1 1 this and i
2 2 name is a
3 3 "so and so "
4 4 this is a
5 5 "this is a "
出于个人喜好,我在这里使用mutate_at
。请注意,可变列会自动作为第一个参数传递。如果您想将它放在函数调用的其他位置,请将其称为 .
.
str_trunc
中没有data
参数,所以你需要给它提供string
。您可以使用
data_frame(id = 1:5,
name = c('this and it pretty long is a',
'name is a',
'so and so and so and so and so',
'this is a',
'this is a variabel name'))$name %>%
str_trunc(width = 10,
side='right',
ellipsis = '')
如果您想要 add/update 现有列,请使用 mutate
函数。
不能直接在管道中使用stringr函数。
data_frame(id = 1:5,
name = c('this and it pretty long is a',
'name is a',
'so and so and so and so and so',
'this is a',
'this is a variabel name')) %>%
mutate(name=str_trunc(name,width=10,side='right',ellipsis=''))
## # A tibble: 5 x 2
## id name
## <int> <chr>
## 1 1 this and i
## 2 2 name is a
## 3 3 "so and so "
## 4 4 this is a
## 5 5 "this is a "
mutate(blah blah) 等同于以下
> df<-data_frame(id = 1:5,
name = c('this and it pretty long is a',
'name is a',
'so and so and so and so and so',
'this is a',
'this is a variabel name'))
> df
## # A tibble: 5 x 2
## id name
## <int> <chr>
## 1 1 this and it pretty long is a
## 2 2 name is a
## 3 3 so and so and so and so and so
## 4 4 this is a
## 5 5 this is a variabel name
> df$name<-str_trunc(df$name,width=10,side='right',ellipsis='')
> df
## # A tibble: 5 x 2
## id name
## <int> <chr>
## 1 1 this and i
## 2 2 name is a
## 3 3 "so and so "
## 4 4 this is a
## 5 5 "this is a
我在尝试编辑 dplyr
管道中的某些字符串的代码时遇到问题。这是一些引发以下错误的数据。有什么想法吗?
data_frame(id = 1:5,
name = c('this and it pretty long is a',
'name is a',
'so and so and so and so and so',
'this is a',
'this is a variabel name'))
%>%
str_trunc(.,
string = .$name,
width = 10,
side='right',
ellipsis = '')
给我这个错误:Error in str_trunc(., string = .$name, width = 10, side = "right", ellipsis = ". . . ") : unused argument (.)
。
谢谢。
您需要mutate
或mutate_at/if/all
来更改列的内容。
data_frame(id = 1:5,
name = c('this and it pretty long is a',
'name is a',
'so and so and so and so and so',
'this is a',
'this is a variabel name')) %>%
mutate_at("name", str_trunc, width = 10, side='right', ellipsis = '')
# A tibble: 5 x 2
id name
<int> <chr>
1 1 this and i
2 2 name is a
3 3 "so and so "
4 4 this is a
5 5 "this is a "
出于个人喜好,我在这里使用mutate_at
。请注意,可变列会自动作为第一个参数传递。如果您想将它放在函数调用的其他位置,请将其称为 .
.
str_trunc
中没有data
参数,所以你需要给它提供string
。您可以使用
data_frame(id = 1:5,
name = c('this and it pretty long is a',
'name is a',
'so and so and so and so and so',
'this is a',
'this is a variabel name'))$name %>%
str_trunc(width = 10,
side='right',
ellipsis = '')
如果您想要 add/update 现有列,请使用 mutate
函数。
不能直接在管道中使用stringr函数。
data_frame(id = 1:5,
name = c('this and it pretty long is a',
'name is a',
'so and so and so and so and so',
'this is a',
'this is a variabel name')) %>%
mutate(name=str_trunc(name,width=10,side='right',ellipsis=''))
## # A tibble: 5 x 2
## id name
## <int> <chr>
## 1 1 this and i
## 2 2 name is a
## 3 3 "so and so "
## 4 4 this is a
## 5 5 "this is a "
mutate(blah blah) 等同于以下
> df<-data_frame(id = 1:5,
name = c('this and it pretty long is a',
'name is a',
'so and so and so and so and so',
'this is a',
'this is a variabel name'))
> df
## # A tibble: 5 x 2
## id name
## <int> <chr>
## 1 1 this and it pretty long is a
## 2 2 name is a
## 3 3 so and so and so and so and so
## 4 4 this is a
## 5 5 this is a variabel name
> df$name<-str_trunc(df$name,width=10,side='right',ellipsis='')
> df
## # A tibble: 5 x 2
## id name
## <int> <chr>
## 1 1 this and i
## 2 2 name is a
## 3 3 "so and so "
## 4 4 this is a
## 5 5 "this is a