在R
版本0.99.473 32位中使用RStudio
版本3.2.2用于具有编码UTF-8
的Windows 64位系统我试图运行R函数createNumericalValues
在下面,它将字符串因子级别(例如收入级别)从dat
文件转换为数值(收入整数)并将其保存在datN
文件中。 dat
文件是使用UTF-8
编码预先读取的。
createNumericalValues<- function(dat){
datN=dat
level$X9=factor(levels=c("über 5.000 €", "4.500 bis 5.000 €", "4.000 bis 4.500 €", "3.500 bis 4.000 €", "3.000 bis 3.500 €", "2.500 bis 3.000 €", "2.000 bis 2.500 €", "1.500 bis 2.000 €", "unter 1.500 €"))
for (i in 1:ncol(dat[1:117])){
if (is.factor(dat[,i])){
if (length(setdiff(levels(dat[,i]),levels(level$X9)))==0){
labelsVec=c(5500,4750,4250,3750,3250,2750,2250,1750,1000)
datN[,i]<- factor(dat[,i],
levels=levels(level$X9),
labels=labelsVec)
datN[,i]<- as.numeric(levels(datN[,i]))[datN[,i]]
}}}
return(datN)
}
如果因子字符串包含欧元符号(€),则只有在另一个脚本(例如main.R)中运行函数createNumericalValues
时,该列才会被正确重构。如果我自己运行函数createNumericalValues
的代码而没有获取它,那么重构工作正常。
这怎么可能?如果我获取函数,我怎样才能确保重构也有效?