在dplyr管道中使用stringr的str_trunc报错,求解决方案
解决dplyr管道结合str_trunc的报错问题
嘿,我来帮你搞定这个报错!你遇到的问题是因为错误地把整个数据框直接传给了str_trunc,而且管道的用法也不符合str_trunc的函数要求。
错误原因
str_trunc是stringr包中用来处理字符串向量的函数,它不接受整个数据框作为输入。你原来的代码里,管道默认把前一个数据框传给了str_trunc的第一个参数,同时又指定了string = .$name,这就造成了参数冲突,所以会抛出“unused argument”的错误。
正确的写法
我们需要用dplyr的mutate函数来配合str_trunc,对数据框中的指定列进行字符串截断操作:
library(dplyr) library(stringr) # 别忘了加载stringr包 # 方式1:添加新的截断后列 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_truncated = str_trunc(name, width = 10, side = 'right', ellipsis = '')) # 方式2:直接替换原name列 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 = ''))
代码说明
mutate是dplyr中用来添加或修改列的函数,它会在数据框的上下文里处理每一列str_trunc直接接收name这个字符串向量作为输入(因为str_trunc的第一个参数就是string,所以可以省略参数名string=)- 这样既符合管道的使用逻辑,也满足
str_trunc的参数要求,就不会报错啦
内容的提问来源于stack exchange,提问作者elliot
相关产品推荐
相关产品推荐

