• R语言
  • 命令行中Rscript执行R脚本没问题,crontab定时调用就报错

命令行中Rscript执行R脚本没问题,crontab定时调用就报错。

错误日志如下:
   999 --------- j= 13 --------
  1000 --------- j= 14 --------
  1001 --------- j= 15 --------
  1002 --------- j= 16 --------
  1003 --------- j= 17 --------
  1004 --------- j= 18 --------
  1005 --------- j= 19 --------
  1006 --------- j= 20 --------
  1007 --------- j= 21 --------
  1008 --------- j= 22 --------
  1009 --------- j= 23 --------
  1010 --------- j= 24 --------
  1011 --------- j= 25 --------
  1012 --------- j= 26 --------
  1013 ------- <U+5927><U+6570><U+636E> title匹配主题关键词-------
  1014 ------- <U+5927><U+6570><U+636E> title匹配主题二级关键词-------
  1015 --------- j= 1 --------
  1016 --------- j= 2 --------
  1017 --------- j= 3 --------
  1018 --------- j= 4 --------
  1019 --------- j= 5 --------
  1020 --------- j= 6 --------
  1021 --------- j= 7 --------
  1022 --------- j= 8 --------
  1023 ------- <U+5176><U+4ED6> title匹配主题关键词-------
  1024 ------- <U+5176><U+4ED6> title匹配主题二级关键词-------
  1025 Error in keywords_ii[[i]] : subscript out of bounds
  1026 Execution halted
这个错误我在R console下和 命令行下Rscript 执行脚本都没有见到,非常奇怪,也无从下手。
由于对linux不熟悉,之前想是不是R不同版本的问题,导致对下标读取有问题?
我是yum安装的R,在之前有一个3.0.2版的,更新到3.1.1版,然后remove之后再安装仍然有这个错误。
特来向大大们求助,有遇到过相似问题的吗?
你确定是linux的问题么?
可以看看对应位置的源码么?
这个错误提示貌似是数组越界导致的。
[未知用户]

这个错误是知道的,但是在linux下的R客户端或者直接命令行运行Rscript都没有问题,唯独用crontab报错。。。我不知道如何下手。。

把R写到.sh文件里执行就可以了。。。我也不知道为啥。。。
提供的信息有些少,我感觉还是R代码的问题。你能不能提供一段会出错的最简单的代码?
至少得把crontab里怎么写的贴出来吧...
有可能是 crontab 执行的环境变量等有所不同造成的。
[未知用户]

主要是这个循环出错
for(i in 1:(length(tagwords)-1)){
  cat('-------', tag$name[i], 'title匹配Tag关键词-------\n')
  unclassdata <- unclassdata[unclassdata$tag == 0,]
  temp <- list()
  for(j in 1:length(tagwords[[i]])){
    temp[[j]] <- grep(tagwords[[i]][j], unclassdata$title)
    cat('--------- j=', j, '--------\n')
  }
  unclassdata$tag[unique(unlist(temp))] <- i
  result <- unclassdata[unclassdata$tag > 0, ]
  data$tag[match(result$ID, data$ID)] <- result$tag
  unclassdata <- unclassdata[unclassdata$tag == 0,]
}
在R客户端和直接执行Rscript命令不报错,crontab报错~
[未知用户]

嗯,
crontab就是 0 8 * * * Rscript /home/xxx/script.R
这样的形式
[未知用户]

网上查到也有说crontab执行R脚本报错的问题,里面提到了环境变量的问题。用那里面提到的方法写到.sh里然后直接运行倒是没有报错,可以正常运行。