应为向量中字符串存在多字节字符,在使用toupper()大写转换函数时报错。
1、一个简单的处理方法是,先将待处理数据转换为utf-8编码,再使用toupper()函数,完了再转换回来:
>a2<-iconv(toupper(iconv(a,"iso8859-1","utf-8")),"utf-8","iso8859-1")
这里a为输入数据,a2为输出数据。
2、若这些字符无意义,可剔除这些多字节字符
>b<-function(p){gsub("\\\\x\\d{2}",'',gsub("\\\"","",deparse(p))}
> a2<-unlist(lapply(a,FUN=b))
b函数为剔除字符串中的多字节字符;
unlist(lapply(a,FUN=b)) 为应用b函数到要处理的向量,因为结果是列表,完了转换为向量。
3、在读入数据时使用正确的编码。
参考:http://stackoverflow.com/questions/4993837/r-invalid-multibyte-string