循环Erreur dans解析的问题(text = expr1):<text>:2:0:fin d'entréeinattendu(e)</text>

时间:2015-03-04 22:23:56

标签: r parsing loops eval

Hy大家。

初学者试图理解一个循环。这是我尝试使用的脚本:

## List of species
vctsp <- levels(data.baobab$Species)`
nspecies <- length(vcstp)` 
absp <- c("Ad","Ab","Ax","An","Al","Ap","Ac","Ar")` 

## Loop on species
for (i in 1:nspecies) {
  expr <- paste("data.",absp[i], <- data.baobab[data.baobab$Species==\"",vctsp[i],"\",]",sep="") 
  eval(parse(text=expr))
}

## Stack World Clim Data
myExpl_37 <- stack("./gis.data/bio_37/bio1_37.tif",
                   "./gis.data/bio_37/bio4_37.tif",
                   "./gis.data/bio_37/bio12_37.tif")

出现问题:

for (i in 1: nspecies) { 
  expr1 <- paste("clim.", absp [i], " <- extract(myExpl_37, data.baobab[data.baobab$Species==\"",vctsp[i],"\",]",sep="")
  eval(parse(text=expr1))
}

Erreur dans parse(text = expr1) : <text>:2:0: fin d'entrée inattendu(e)
1: clim.Ad <- extract(myExpl_37,data.baobab[data.baobab$Species=="A_digitata",]^`

这个循环应该是这样的(如果我手动完成):

clim.Az <- extract(myExpl_37,data.Az)

1 个答案:

答案 0 :(得分:0)

如果您使用字符串操作生成代码,打印代码以确保代码正确无误是一个好主意。在这种情况下:

cat(expr1)
# clim.Ad <- extract(myExpl_37, data.baobab[data.baobab$Species=="A_diitata",]

注意最后缺少)

您现在需要"\",])" {。}}。