R system()无法使用MODIS重投影工具

时间:2016-06-03 01:13:54

标签: r macos

我有一个命令在Mac(OSX El Cap)上键入终端时有效,但是当使用system()从R调用时,相同的命令失败。

我正在尝试使用MODIS Reprojection Tool批量处理MODIS卫星文件。我的软件都是最新的。

这是一个简单的例子,我将两个文件拼接在一起。这两个文件的名称位于名为input.list的文本输入文件中。该命令只告诉mrtmosaic例程在哪里找到输入列表以及输出的位置。

此命令在终端中正常工作:

/Applications/Modis_Reprojection_Tool/bin/mrtmosaic -i ~/temp/input.list -o ~/temp/output.hdf

但是,如果我将完全相同的字符串放入变量并从R(使用RStudio)运行它,它就会失败:

comstring<-"/Applications/Modis_Reprojection_Tool/bin/mrtmosaic -i ~/temp/input.list -o ~/temp/output.hdf"  
system(comstring)
  

警告:gctp_call:未找到环境变量:
      MRT_DATA_DIR或MRTDATADIR未定义       错误:GetInputGeoCornerMosaic:常规处理将纬度/经度坐标转换为输入投影坐标时出错       致命错误,终止......

奇怪的是系统知道环境变量是什么。在终端中,命令 echo $MRT_DATA_DIR 显示正确的目录: / Applications / Modis_Reprojection_Tool / data

我不知道为什么在终端没有问题的情况下从R system()电话中找到变量时会遇到问题。我很难过!

1 个答案:

答案 0 :(得分:2)

我将此问题发布到R帮助列表中,有两个人帮我解决了这个问题。他们建议(如果我理解的话)问题是OSX El Capitan没有成功地将环境变量传递给R.无论如何:

这些有效:

  1. .bash_profile中设置环境变量(例如,通过添加和导出MTR_DATA_DIR="/Applications/MRT/data");或
  2. 通过将相同的行添加到我的主目录中的.Rprofile文件来设置环境变量。
  3. 这些工作:

    1. 通过键入Sys.setenv(MRT_DATA_DIR="/Applications/MRT/data")在R命令行设置环境变量;或
    2. .Renviron文件(位于我的主目录中)中设置环境变量,方法是向其添加MRT_DATA_DIR="/Applications/MRT/data";或
    3. 在终端中输入MRT_DATA_DIR="/Applications/MRT/data" open -a Rstudio。最后一种方法是一种有效的解决方法,也是一个有用的工具,但是有点笨拙,因为每次都必须记住以这种方式打开RStudio。