如何在R语言中按字符串长度对向量执行有序因子化?
R语言按字符串长度对向量执行有序因子化的正确方案
错误原因
你原有代码的问题出在levels=length(df)参数赋值:length(df)返回的是整个向量的元素总个数,而非每个字符串元素的字符长度,因此无法匹配你的需求。
正确实现代码
# 计算每个字符串元素的字符长度,NA值会自动保留为NA str_length <- nchar(df) # 提取非NA的长度值,去重后升序排列作为有序因子的levels sorted_levels <- sort(unique(na.omit(str_length))) # 创建有序因子 df.ordered <- factor(str_length, levels = sorted_levels, ordered = TRUE) # 如果需要获得对应长度的数值向量,执行如下转换即可 output_num <- as.numeric(as.character(df.ordered))
效果说明
运行上述代码后,df.ordered会直接展示每个元素对应的长度值,且levels默认按从小到大排序,和你预期的输出格式完全一致。
内容的提问来源于stack exchange,提问作者JAdel
相关产品推荐
相关产品推荐

