我写了一个R脚本,并在16个变量和1 000 000个观测值的数据帧上执行它,但尚未完成。是否有可能改进此代码以获得速度?
for(i in seq_along(cp.up$Connection.Number)){
if (nchar(cp.up$IMEI[i]) == 14){
cp.up$IMEI.enrichi[i] <- substr(cp.up$IMEI[i], 1, 8)
} else if(nchar(cp.up$IMEI[i] == 13)){
cp.up$IMEI.enrichi[i] <- substr(cp.up$IMEI[i], 1, 7)
} else {
cp.up$IMEI.enrichi[i] <- NA
}
}
该代码运行良好,因为当我停止该过程时,部分fataframe已满。
在此先感谢!
编辑:ifelse语句解决问题,
chars <-nchar(cp.up$IMEI)
cp.up$IMEI.enrichi <- ifelse(chars == 14, substring(cp.up$IMEI, 1, 8),
ifelse(chars == 13,substring(cp.up$IMEI, 1, 7), NA))
什么是cp.up?你可以输入数据吗? – 2015-02-06 16:42:51
'sapply'不会加速任何事情。 – Roland 2015-02-06 16:43:27
cp.up是一个数据框! – 2015-02-06 16:44:29