首页 > 解决方案 > 在 R 中创建变量时出错

问题描述

我将几个单词粘贴在一起,但我需要没有引号和索引的输出。为此,我使用以下代码:

condition_2<-cat(noquote(paste("S1_images", "[[1]]",sep="")))

当我运行它时,我在终端上得到了正确的结果:S1_images[[1]]. 但是,如果我检查变量condition_2以确保文本已保存,我会得到以下输出

NULL

这造成了一个问题,因为我需要该变量稍后在代码中用作参考。

- 编辑 -

我需要索引[1],因为我想condition_2在另一行中用作参考。如果我不删除它,会发生以下情况:

training_r<-rasterize(training,condition_2, field=test$_ID)

哪个输出是:

Error in (function (classes, fdef, mtable)  : 
  unable to find an inherited method for function ?rasterize? for signature ?"SpatialPolygonsDataFrame", "noquote"?

如果我删除它(使用cat),会发生以下情况:

> training_r<-rasterize(training,condition_2, field=test$ID)

Error in (function (classes, fdef, mtable)  : 
  unable to find an inherited method for function ?rasterize? for signature ?"SpatialPolygonsDataFrame", "NULL"?

任何想法?

标签: rpastecat

解决方案


您可以使用创建变量

condition_2 <- parse(text = paste0("S1_images", "[[1]]"))


然后在使用这个变量时,你可以用eval例如包装它

rasterize(training, eval(condition_2), field = test$_ID)

推荐阅读