我在使用此代码时遇到问题,该代码尝试编辑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 (.)
。
感谢。
答案 0 :(得分:5)
您需要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
。请注意,变异列会自动作为第一个参数传递。如果您想将其放在函数调用中的其他位置,请将其称为.
。
答案 1 :(得分:0)
data
中没有str_trunc
参数,因此您需要将其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 = '')
答案 2 :(得分:0)
如果要添加/更新现有列,请使用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