使用dplyr的mutate生成字符串长度列时结果不符合预期的问题
问题解决
你的代码里用length(sym)得到的是整个列的元素数量,而非单个字符串的长度。要实现预期效果,只需把length()换成nchar()即可,nchar()会逐个处理向量中的每个字符串元素:
library(dplyr) dfr <- data.frame(sym = c("aa","bbb","c","dd")) dfr %>% mutate(len = nchar(sym))
运行后输出符合预期:
sym len 1 aa 2 2 bbb 3 3 c 1 4 dd 2
原因说明
length()函数作用于整个向量(即sym列),返回的是向量包含的元素总数(这里是4),因此mutate会将这个值重复填充到每一行。nchar()函数则是对向量中的每个元素单独计算字符长度,正好满足你需要为每行生成对应字符串长度的需求。
内容的提问来源于stack exchange,提问作者M C
相关产品推荐
相关产品推荐

