一个简单的Taxon Parser:将输入的字符串按照属种作者分开

处理生物学名时经常需要将学名按照意义分成几个部分, 如

  1. GENUS 属名
  2. SPECIES 种加词
  3. AUTHOR_OF_SPECIES 作者
  4. INFRASPECIFIC_RANK 种下等级
  5. INFRASPECIFIC_EPITHET 种下等级加词
  6. AUTHOR_OF_INFRASPECIFIC_RANK 种下等级作者
    例如, 太白深灰槭的学名是:
    Acer caesium Wall. ex Brandis subsp. giraldii (Pax) E. Murr.

按照各部分的含义分开,应该是:

  • 属名 GENUS: “Acer”
  • 种加词 SPECIES: “caesium”
  • 种作者 AUTHOR_OF_SPECIES: “Wall. ex Brandis”
  • 属下等级 INFRASPECIFIC_RANK: “subsp.”
  • 属下等级加词 INFRASPECIFIC_EPITHET: “giraldii”
  • 属下等级作者 AUTHOR_OF_INFRASPECIFIC_RANK: “(Pax) E. Murr.”

物种的学名的拼写有以下几种情况

  1. 只给出属名
  2. 只给出属名和sp.
  3. 给出属名和种名, 但是未提供作者
  4. 给出属名, 种加词和作者
  5. 给出属名, 种加词, 作者, 种下等级(var.或subsp.,或f.), 种下等级加词, 种下等级作者
  6. 给出属名, 种加词, 种下等级(var.或subsp.,或f.), 种下等级加词, 种下等级作者
  7. 给出属名, 种加词, 种下等级(var.或subsp.,或f.), 种下等级加词
  8. 相应的程序必须考虑到以上各种情况, 并将其正确分开。

herblabel (https://github.com/helixcn/herblabel ) R 程序包提供了一个简单的生物学名处理的函数

parse_taxa(), 经过测试,在以上提到的各种情况, 均工作正常。 由于 种下等级 f. 也常用于人名, 故本程序未加入处理f.的部分。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
library(herblabel)
### Species
parse_taxa("Acer")
parse_taxa("Acer caudatifoliumHayata")
parse_taxa("Acer caudatifolium")
parse_taxa("Acer sp.")
### variaty
parse_taxa("Acer caudatum Wall. var.multiserratum (Maxim.) Rehd.")
parse_taxa("Acer caudatum var.multiserratum (Maxim.) Rehd.")
parse_taxa("Acer caudatum Wall. var.multiserratum")
parse_taxa("Acer caudatum var. multiserratum")
### subspecies
parse_taxa("Acer caesium Wall. exBrandis subsp. giraldii (Pax) E. Murr.")
parse_taxa("Acer caesium subsp.giraldii (Pax) E. Murr.")
parse_taxa("Acer caesium Wall. exBrandis subsp. giraldii")
parse_taxa("Acer caesium subsp.giraldii")

星图中的球极平面投影

将球面投影到平面上,有多种投影方式。R中的mapproj程序包包含了大部分的投影,适用于地图的投影变换。 而星图中最常用的投影方式为球极平面投影(Stereographic projection), 这种投影方式有时也用于地图中。

这里介绍在R中如何实现球极平面投影。

定义函数stereo_proj

  • lambda: 其中lambda为赤经
  • phi: 为赤纬
  • lambda0 =0: lambda0为地图(星图)的投影中心点 赤经
  • phi0 =0: phio为地图(星图)投影中心点的 赤纬
  • R =1: 为比例半径, 一般取值为1

函数定义如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
stereo_proj <-function(lambda,phi, lambda0 =0, phi0 =0, R =1){
lambda <- lambda/(180/pi)
phi <- phi/(180/pi)
lambda0 <- lambda0/(180/pi)
phi0 <- phi0/(180/pi)
k =2*R/(1+sin(phi0)*sin(phi)+cos(phi0)*cos(phi)*cos(lambda - lambda0))
x = k*cos(phi)*sin(lambda - lambda0)
y = k*(cos(phi0)*sin(phi)-sin(phi0)*cos(phi)*cos(lambda - lambda0))
return(list(x = x, y = y))
}

### 公式参见 ### Source
###
### 下面用地图投影变换举例

library(maps)
###
aaa <- map()
### 获取大比例尺世界地图中的座标
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
plot(stereo_proj(lambda = aaa$x, phi = aaa$y), 
type ="l", xlim =c(-6,6), ylim =c(-6,6))

### 添加经度线
####Adding longitudinal Lines
long =c(-180, -150, -120, -90, -60, -30, 0, 30, 60, 90, 120, 150)
lat =-90:90
for(i in long){
temp <- stereo_proj(lambda = i, phi = lat)
points(temp$x, temp$y, type ="l")
}
### 添加纬度线
### Adding latitudinal lines###
plot(0, xlim =c(-2, 2), ylim = c(-2, 2), pch = "")
lat =c(-90, -60, -30, 0, 30, 60, 90)
long =-150:150

for(i in lat){
temp <- stereo_proj(lambda = long,phi = i)
points(temp$x, temp$y, type ="l")
}

R中调用Python代码: 以运行PyEphem天文计算程序包为例

操作系统Linux Mint
安装 python 2.7.6 dev 版本
pyephem 所需要的 Numpy,Scipy 已经安装
rPython程序包所依赖的RJSONIO程序包也已经通过install.packages(“RJSONIO”) 安装到R中。

举例:

1
2
3
4
5
library(rPython)
python.exec("from ephem import *")
python.exec("j = ephem.Jupiter()")
python.exec("j.compute('1986/2/8')")
python.exec("print('%s %s' % (j.ra, j.dec))")

嘉道理农场暨植物园诚聘“植物鉴定和记录主任(已招到)

以下是简体中文说明(招聘信息以英文版为准)。

工作职责和要求如下:

(1)在香港和华南地区进行与植物保育与研究相关的野外工作。

(2)在野外以及标本馆进行植物的辨认或鉴定, 并保证采集的植物都有完整的采集记录。

(3)建立和管理嘉道理农场的植物采集记录数据库。

(4)组织森林监测样地的调查,并使数据格式符合CTFS的标准。

(5)做植物保育相关工作的报告。

(6)进行一般的行政管理, 如管理数据, 以及其他工人等。

要求:

  • 认同嘉道理农场暨植物园的目标, 远景以及价值观。

  • 具有研究生以上的学位(具有博士学位优先), 该学位需要与植物多样性和保护相关。

  • 热衷于植物生物多样性的保护。

  • 能够在野外鑑定出香港和华南地区的常见植物。

  • 具有管理植物数据库和植物图片的经验。

  • 具备森林样地或植被数据分析的背景, 至少在以下方面之一有工作经验 (1) 植物系统分类学 (2)群落生态学 (3) 物种分布模型 (4) 宏观生态学。

  • 具有良好的沟通能力, 品行端正。

  • 具有良好的英文和中文的听说读写能力。

  • 有 R, Python, SQL 和 GIS背景的申请人优先考虑。

  • 身体情况适合野外工作, 并且有出野外的经验。

  • 具有开阔胸襟, 尊重大自然。

条件符合者将会被通知面试, 面试通过后,将以“输入内地人才计划”的方式来港工作。

请注意: 工作语言以及面试, 均为英文.

申请者请准备

(1) 英文版个人简历, 附上两位推荐人, 并说明申请的职位, 以及期望的薪水。

(2) 一封申请信 (给出相应的工作经验以及为什麽对该职位感兴趣)。

邮寄到 Human Resources Manager, Kadoorie Farm & Botanic Garden Corporation, Lam Kam Road, Tai Po, New Territories, Hong Kong

或电邮 到 kfjobs@kfbg.org

以下为 英文版招聘广告, 原文链接 http://www.kfbg.org/eng/PIRO-flo.aspx

Plant Identification and Records Officer, FloraConservation Department, Kadoorie Farm and Botanic Garden Corporation, HongKong SAR.

KFBG isseeking a highly motivated ecologist/botanist working on plantbiodiversity conservation and research in the Flora Conservation Department. Thecandidate should be enthusiastic with good communication skills, capable of working in ateam and managing projects under supervision. Daily duties will include(1) to help to curate the KFBG herbarium including the management of theinternal specimen collection database and to conduct plant exploration fieldtrips in Hong Kong and South China, (2) to organise and to participate in thesurvey of forest dynamic plots and ecological forest restoration plantings, and(3) to analyse existing and accumulating forest restoration and forestmonitoring datasets.

Responsibilities

To conduct field trips in countryside of HongKong and in South China for plant conservation and research projects.

To identify plant specimens both in the fieldand in herbarium to ensure the plant collections are well labelled.

To establish and manage an inventory databaseof botanical data for KFBG, and to handle the specimen collection records aspart of the mission, activities, and projects of KFBG.

To organize the (re)-census of forest dynamicand forest restoration plots and to process the dataset based on CTFS standard.

To provide capacity building and deliverpresentations or guided tours for plant conservation work relevant to themission of the Flora Conservation Department.

To handle general administrative duties,including but not limited to documentation of various kinds of data andsupervising other workers.

Requirements:

Commitment to the mission, vision and valuesof KFBGC. Being open minded and recognizes the validity of all spiritual paths.Being passionate about the biodiversity of plants and its conservation.

Possess a postgraduate degree (preferably PhDDegree) related to Plant Biodiversity and Conservation.

With field identification skills pertainingto the wild plants of Hong Kong and South China.

Experience in managing databases for plantinformation, including the living and preserved collections, and plant photos.

Experience in data analysis for forest plotsor vegetation. Experience either in (1) plant systematics, (2) communityecology, (3) species distribution modelling or (4) macro ecological studies.

Computer literacy, with experience andknowledge in computer programming using: R, Python, SQL and GIS would be anadvantage.

Good communication and interpersonal skills,including good command of spoken and written English and Chinese.

Physically fit for outdoor work andexperience in hiking in countryside.

Further Information isavailable at: http://www.kfbg.org/eng/PIRO-flo.aspx

How to apply:

Please send a C.V. (withtwo references, interested position and expected salary) and a short essay (onrelevant experience and reasons for interest in the post) to the HumanResources Manager, Kadoorie Farm & Botanic Garden Corporation, Lam KamRoad, Tai Po, New Territories, Hong Kong or email to kfjobs@kfbg.org.

Linux 使用Geany编写并调试R脚本

Geany是Linux下的一个文本编辑器, 十分简洁高效。 带有多种编程语言的高亮, 对于需要编译的语言如 C, C++, Fotran等, Geany提供了编译以及调试的平台。 用户可以直接写代码, 然后编译成可执行文件。
而Geany也可以用来编辑R, python等脚本语言, 并且, 通过简单的设定, 即可将所选的代码发送到Terminal。

为了将所选择的命令直接发送到Terminal, 设定如下:

  1. /home/username/.config/geany/ 中, 打开 geany.conf
    更改 send_selection_unsafe=true

其中username要替换成该linux用户名

  1. 打开geany, Edit >Preferences>KeyBindings> Format > Sent Selection to Terminal
    按住 Control键 和 R键
    然后选择 overwritten, 保存即可。

  2. 使用时, 先在下方的Terminal 输入R以打开R, 然后选择要运行的R命令, 同时按住Control和R键即可。

用git在github上托管代码

git是版本控制工具,主要用来监测和记录纯文本文件所做的更改。git可以将所做的修改远程提交到git repository (如 github) 。 同时, 每一个git用户可以设定多个分支。 其中master分支, 一般作为软件的正式发布版本。 以其他名字命名的分支, 可以进行debug。 不同的分支之间, 可以合并。 而每一次提交修改, 都是在本地的repository库中进行, 只有在push到远程的repository后, 远程repository才接收到更改的记录, 并作出改变。

这样, 每一个本地的git repository都有关于主干(即对master分支的修改), 以及本地分支(任何一个master以外的分支)的完整记录。 由于修改都是先提交到本地的git数据库中,因此提交修改速度都很快。

本文以 herblabel R程序包为例, 介绍如何使用git, 以及如何将herblabel的源代码托管到github上。

  1. 在github上, 创建相应程序包的repository, 如命名为 herblabel

网址为 https://github.com/helixcn/herblabel

若未安装git, 需要在terminal输入 sudo apt-get install git

  1. 第一次使用本地版本的git时,需要设定用户名和联系方式

打开 terminal,输入

1
2
git config --global user.name "Jinlong Zhang"
git config --global user.email "jinlongzhang01@gmail.com"
  1. 更改 credential helper缓存密码的时间

git config --global credential.helper 'cache --timeout=3600'

  1. 在本地/herblabel/文件夹中 创建本地的repository
1
2
cd /home/jinlong/git_repositories/github_herblabel/
git init
  1. 在/herblabel/文件夹下, 将herblabel 源代码记录到git库中。

git add *

  1. master版本, 即最终发布版本,commit到本地的库中

git commit -m 'initial commit'

  1. 推送到github

git push -u origin master

git会提示输入github的用户名和密码, 输入后, git会自动将master分支上传到服务器。

  1. 将master分支推送到github服务器后, 每一次在本地进行修改时,如修整了软件的一个bug, 一般流程如下

    1. 新建一个分支 如 herblabel_dev 命令如下 git checkout -b herblabel_dev
    2. 修改代码, fix the bug
    3. 回到master分支 git checkout master
    4. 将herblabel_dev所做的修改合并到master中: git merge herblabel_dev
    5. 提交所做的修改 git add *
    6. 记录所做的修改 git commit -m “XX bug fixed”
    7. 提交所做的修改到github服务器 git push,

本地使用分支 Branch
9. 创建一个新的分支(branch),将其作为活动分支(checkout),然后就可以编辑、载入和提交新的快照。

创建新的分支herblabel_dev

git branch herblabel_dev

  1. 将herblabel_dev分支作为工作分支

git checkout herblabel_dev

  1. 继续编辑源代码,git会将改动自动记录到herblabel_dev分支下

  1. 查看状态

git status

  1. 将进行的修改做详细的记录, 并做记录

git commit -m 'Fix Bug A'

  1. 转换到master分支, git会自动显示哪些地方做了更改。

$ git checkout master

  1. 将改动的信息保存到git数据库中, 用log 消息记录

$ git commit -a -m 'change files'

  1. 将 herblabel_dev分支上的改动,合并到当前分支

git merge herblabel_dev

  1. 删除这个分支

git branch -d herblabel_dev

如果在本地删除了某文件, 而同时希望在github上删除, 则应该先commit

git commit -a -m "A file was deleted"

之后push

git push

放弃本地所做的所有修改比如master分支:

git reset --hard origin/master

可以用 gitg 软件查看所做的更改以及分支

更多git的图形用户界面GUI参见 https://git-scm.com/downloads/guis

R中调用FORTRAN的两种方式

Fortran是最古老的计算机语言之一,是专为数值计算设计的,在过去几十年中积累了大量代码。很多情况下,人们无需用R或Python重新实现fortran中已有的算法, 而是直接调用这些Fortran代码即可。相对其他编程语言,Fortran比较简单,而且很多编译器经过多次优化,代码的执行效率非常高,一般会超过C语言。虽然Fortran已经60岁了,但在涉及高性能计算的很多领域,如天文、物理、气象、统计等学科中仍发挥着重要作用。

Fortran语言的标准包括F77,F90,F95,F2003, F2008等。每一次版本调整, 一般是为语言增加部分新的特性。最常用的Fortran版本为F77和F90。Fortran77版本编写的代码,扩展名为.f, 以固定格式书写;而Fortran90的源代码文件,扩展名一般为f90,以相对自由的格式书写。

本文简要介绍在R中如何调用Fortran77和Fortran90代码,最后介绍在inline程序包中编译和调用fortran代码。

在R中调用Fortran代码的基本流程是:

  1. 先将Fortran用gfortran编译为shared library。 在Windows下,要将fortran源代码编译为动态链接库 dll, 在Linux和Mac下编译为so文件。编译过程可通过cmd或者terminal调用gfortran(或者其他fortran编译器)实现,也可以直接在R中用system()函数调用gfortran编译。
  2. 在R中,用dyn.load()函数加载编译好的bishared library。
  3. 在R中,使用.Fortran()函数调用shared library中的代码,结果将以List的格式返回。

目标:

计算n的阶乘 n!=∏nk=1k∀n≥1 源代码用Fortran写成。

所需软件

  1. R(https://cran.r-project.org/)
  2. Windows下,请安装Rtools,Rtools中包含gfortran编译器,安装时请将Rtools添加到启动 路径,参考 (https://github.com/helixcn/programing_in_r_cn/blob/master/beamer/00_software_installation.pdf )

方法1,编译代码后加载和调用Fortran代码

将Fortran代码编译为share library后,再用R的.Fortran函数调用。

编译和调用Fortran77代码

Fortran 77源代码

1
2
3
4
5
6
7
8
9
C   Content of file factorial.f
C FINDING THE FACTORIAL IN FORTRAN 77
SUBROUTINE FACTO1(N,ANSWER)
INTEGER N, ANSWER, I
ANSWER = 1
DO 100 I = 2,N
ANSWER = ANSWER * I
100 CONTINUE
END

Mac和Linux下的R脚本

1
2
3
4
setwd("/Users/jinlong/Desktop/fortran_example/fortran77/")
system("R CMD SHLIB factorial.f")
dyn.load("factorial.so")
.Fortran("facto1",n=as.integer(5),answer=as.integer(1))

Windows下的R脚本

1
2
3
4
setwd("C:\Users\jlzhang\Desktop\fortran77")
system("Rcmd SHLIB factorial.f")
dyn.load("factorial.dll")
.Fortran("facto1",n=as.integer(5),answer=as.integer(1))

编译和调用Fortran90代码

Fortran90源代码

1
2
3
4
5
6
7
8
9
10
! Content of file factorial.f90
! Finding the factorial in Fortran 90
subroutine facto2(n,answer)
implicit none
integer n, answer, i
answer = 1
do i = 2,n
answer = answer * i
end do
end subroutine facto2

Linux下的R代码

1
2
3
4
setwd("/Users/jinlong/Desktop/fortran_example/fortran90/")
system("R CMD SHLIB factorial.f90")
dyn.load("factorial.so")
.Fortran("facto2",n=as.integer(5),answer=as.integer(1))

Windows下的R代码

1
2
3
4
setwd("C:\Users\jlzhang\Desktop\fortran90")
system("Rcmd SHLIB factorial.f90")
dyn.load("factorial.dll")
.Fortran("facto2", n=as.integer(5), answer=as.integer(1))

方法2,使用inline程序包

1
2
3
4
5
6
7
8
9
10
library(inline)
fcode <- "
integer::i
do i = 2, n(1)
res(1) = res(1) * i
end do
"
fcodefun <- cfunction(signature(n="integer", res = "integer"),
fcode, convention=".Fortran")
fcodefun(n = as.integer(5), res = as.integer(1))

若要将Fortran编写到程序包中, 则需要将fortran源代码放入src文件夹中, 用.Fortran()直接调用fortran中的subroutine。R程序包的源代码中是不允许有已经编译好的可执行程序的, 因为这会造成安全风险以及可移植性的问题。注意,.Fortran()中的参数数据类型,必须与fortran代码中的类型一致,一般用 as.integer, as.double, as.character等转换成fortran代码能识别的数据类型。

labdsv程序包(https://cran.r-project.org/web/packages/labdsv/index.html )中包含了f77,可供参考。

参考资料

山寨版 Color Checker

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#### 颜色
colours<-c("#735244", "#c29682", "#627a9d", "#576c43", "#8580b1", "#67bdaa", "#d67e2c", "#505ba6",
"#c15a63", "#5e3c6c", "#9dbc40", "#e0a32e", "#383d96", "#469449", "#af363c", "#e7c71f",
"#bb5695", "#0885a1", "#f3f3f2", "#c8c8c8", "#a0a0a0", "#7a7a79", "#555555", "#343434")
#### xy矩阵
x =1:24
y =1:24
dim(x)<-c(4, 6)
dim(y)<-c(4, 6)
x1 =2
y1 =-2
for(i in1:6){
for(j in1:4){
x[j, i]<-x1 +i*(13.5+2)
y[j, i]<-y1 -j*(13.5+2)
}
}
#### 定义颜色块出现的位置
x2 <-x -13.5
y2 <-y -13.5
### pdf(file ="color.checkerNaNyk.pdf", width =4, height = 3,colormodel="cmyk")
#pdf(file = "color.checker.rgb.pdf", width =4.2,height = 3)
par(bg ='black', mar =c(0,0,.8,0))
plot(1, xlim=c(5, 94), ylim =c(-77, -18),pch ="")
cols <-colours
k =1
for(i in1:4){
for(j in1:6){
rect(x[i,j],y[i,j],x2[i,j],y2[i,j],col= cols[k])
k =k +1
}
}
mtext("Colour Checker in RGB",side =3, line=.01, col="white",cex =0.6)
#dev.off()
#pdf(file ="color.checker.CMYK.pdf", width =4.2, height =3,colormodel="cmyk")
par(bg ='black', mar =c(0,0,.8,0))
plot(1, xlim=c(5, 94), ylim =c(-77, -18),pch ="")
cols <-colours
k =1
for(i in1:4){
for(j in1:6){
rect(x[i,j],y[i,j],x2[i,j],y2[i,j],col= cols[k])
k =k +1
}
}
mtext("Colour Checker in CMYK",side =3, line=.01, col="white",cex =0.6)
#dev.off()

Windows从源代码安装R程序包-以安装picante程序包为例

按:本文主要是为了回复北京大学王庆刚博士的问题而准备的。 这里截取了email中部分内容, 希望对使用R的同仁有帮助。

主要步骤

  1. 安装Rtools、MikTeX及7zip

  2. 下载源代码 picante http://cran.r-project.org/src/contrib/picante_1.6-2.tar.gz 解压缩。

  3. 在windows cmd 的命令行中输入相应的命令,生成zip文件或者.tar.gz,并进行相应的检查。

1. 安装工具软件

(1)Rtools(制作R包的主要工具)

Rtools是在windows下制作R包的一系列工具。下载地址: http://cran.r-project.org/bin/windows/Rtools/

(2) MikTeX

用来生成PDF格式的帮助文件。
下载地址:http://www.miktex.org/

(3) 7zip

用来为程序包的源代码解压缩。
http://www.7-zip.org/download.html

2. 设置文件启动路径:

设置启动路径的目的是在cmd命令行可以直接调用R, Rtools以及MikTeX等相应软件。

右键点击:

我的电脑>属性>高级>环境变量>系统变量 PATH一项,点击“编辑”,检查是否具有以下路径。通常软件在安装时已经自动配置好了启动路径。

3. 解压缩R源代码, 并放在路径无中文的文件夹下。

例如 建立一个文件夹 package, 将 picante_1.6-2.tar.gz 文件拷贝到 package文件夹下。 点击右键, 用7zip解压缩,直到 picante 文件夹这一层为止。

4. 在 package文件夹下, 创建四个纯文本文件

(1)“install Check.txt”

用记事本打开, 输入如下内容(不包括引号)

1
2
Rcmd check picante
pause

保存

(2)“install create Linux.txt”

用记事本打开, 输入如下内容(不包括引号)

1
2
Rcmd build picante
pause

保存

(3)“install create Windows Binary.txt”

用记事本打开, 输入如下内容(不包括引号)

1
2
Rcmd INSTALL --build picante
pause

保存

(4)“install.txt”

用记事本打开, 输入如下内容(不包括引号)

1
2
Rcmd INSTALL picante
pause

保存

将扩展名txt 更改为 .bat

5. 检查和安装

  • 双击install Check.bat, 进行程序包的检查。

  • 双击install create Linux.bat, 生成R程序包源代码包。

  • 双击install create Windows Binary.bat, 生成Windows下的安装包。

  • 双击install.bat, 安装到本地的R的library中。

CRAN上部分程序包由于错误太多, 而被移动到Archive, 而只提供源代码。 在安装这些程序包的时候, 可能会遇到检查无法通过的情况。 请注意, 当前版本的R, 必须提供Namespace文件。 可以参考 Writing R Extensions 了解 Namespace等的写法。

用tortoisesvn管理Rforge上的程序包

tortoiseSVN是用来进行版本控制的, 任何一次修改, 都放在数据库中,极大地方便了跟踪程序开发的进程。 下载网址为:

http://sourceforge.net/projects/tortoisesvn

用TortoiseSVN管理本地的源代码, 并推送至Rforge的步骤如下

  1. 创建repository:

新建一個空白的文件夾,如spaa repository, 用來作為repository。 點擊右鍵, TortoiseSVN > Create repository Here。

2.创建源代码文件夹:

新建一個空白文件夾, 如spaa, 用來保存程序源代碼。 右鍵svn checkout,選擇合適的repository文件夾。

  1. 拷贝源代码:

將程序的源代碼, 復制到spaa文件夾下。

  1. Commit 和 update:

再次點擊右鍵, SVN update, 是從spaa repository復制到本地spaa; SVN commit,是從spaa上傳到服務器上(或repository上)。SVN commit是將本地的修改, 上傳到服務器上。

  1. 管理r-forge上的项目:

如果是rforge上的項目, 如 xxxx, 在設定 svn checkout的時候, 需要設定遠程文件夾為,svn+ssh://yourusername@r-forge.r-project.org/svnroot/xxxx/

当然, 必须先要在r-forge上登记了这个项目才可以。