关于R语言中nchar函数处理列表时异常行为的疑问
问题解释:R中nchar处理list返回异常数值的原因
这是因为nchar函数的设计目标是处理字符向量,当你传入一个list时,R会自动把list强制转换为字符型(相当于先执行as.character(mylist)),然后再计算每个转换后字符串的长度。
我们一步步拆解验证:
- 对list的
a元素执行as.character(mylist$a),得到的结果是字符串:"c(\"zzz\", \"xs\", \"acgt\")"
数这个字符串的所有字符(包括引号、逗号、空格、括号),总数正好是22。 - 对list的
b元素执行as.character(mylist$b),得到的结果是字符串:"c(\"aa\", \"bb\")"
同样统计所有字符,总数正好是13。
如果想正确计算list中每个字符向量里元素的长度,应该用lapply或者sapply遍历list:
sapply(mylist, nchar) # $a # [1] 3 2 4 # $b # [1] 2 2
内容的提问来源于stack exchange,提问作者Max_IT
相关产品推荐
相关产品推荐

