当我从某个目录启动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会话切换到另一个工作空间吗?
答案 0 :(得分:3)
工作区存储在.RData文件中,并在启动R时从当前工作目录自动加载。但工作目录本身(以及设置它的setwd()
函数)与工作区无关。您可以通过显式指定任何.RData文件来加载任何工作区:
load("c:/project/myfile.RData")
或
setwd("c:/project/")
load()