R中工作空间背后的哲学是什么?

时间:2015-06-11 05:40:06

标签: r workspace setwd

当我从某个目录启动R会话时,R会自动加载相应的工作区(如果存在)。在我完成在此工作空间中工作后,我可以决定是否要修改(保存)当前工作空间。这个逻辑很简单明了。

我不明白,如果我从某个目录启动R然后按quit()更改工作目录会发生什么。据我所知,对应于新工作目录的工作空间不会被“加载”。我仍然可以看到上一个工作目录中的变量和历史记录。为什么呢?

其次,当我$model = Band::model()->findbyPK($id); $model->scenario = 'update'; if(isset($_POST['Band']) && !empty($_POST['Band'])) { $model->attributes = $_POST['Band']; if(empty($_POST['Band']['logo'])) $image = $model->logo; $rand = rand(1, 999); $myfile = CUploadedFile::getInstance($model,'logo'); $myfile = "{$rand}-{$myfile}"; //Generate unique file name if($model->validate()) { if(!empty($myfile)) { $model->logo = $myfile; $path = explode(".", $myfile->name); $filePath = 'files/'.$myfile->name; if(!$myfile->saveAs($filePath)){ $model->addError( 'logo', 'File saving error' ); } } else { $model->logo = $image; } if( !$model->hasErrors() && $model->save( false ) ) { $this->redirect(array('view','id'=>$model->band_id)); } } } R时,我将“新”工作目录对应的工作空间图像替换为“旧”目录对应的工作空间。我能正确解释这种行为吗?这种行为背后的逻辑是什么?我可以从R会话切换到另一个工作空间吗?

1 个答案:

答案 0 :(得分:3)

工作区存储在.RData文件中,并在启动R时从当前工作目录自动加载。但工作目录本身(以及设置它的setwd()函数)与工作区无关。您可以通过显式指定任何.RData文件来加载任何工作区:

load("c:/project/myfile.RData")

setwd("c:/project/")
load()