【问题标题】:Error creating variable in R在 R 中创建变量时出错
【发布时间】:2018-05-14 07:18:47
【问题描述】:

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

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

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

NULL

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

-- 编辑--

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

training_r&lt;-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),会发生以下情况:

&gt; training_r&lt;-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"?

有什么想法吗?

【问题讨论】:

  • 我认为问题来自cat,它迫使控制台打印文本127.0.0.1:14718/library/base/html/cat.html,你为什么要使用那个功能?注意:您也可以将paste(..., sep = "") 减少为paste0(...)。如果您只是想将值分配给condition_2,那么只需使用condition_2&lt;- noquote(paste0("S1_images", "[[1]]"))
  • 我正在使用cat 删除添加到我的代码输出中的[1]。如果我在没有cat 的情况下运行代码,输出将是[1] S1_images
  • 好的,但是为什么你需要它消失呢?我很确定该数字只是 R 控制台的一部分-索引已调用的对象-并且没有“附加”到值 condition_2 例如,如果您将 rep(coniditon_2, 1000) 传递给控制台,每行的开头给出一个数字,该数字是该行的第一个实例的位置
  • 我已编辑问题以添加更多信息
  • 你能不能逗我一下,试试condition_2&lt;- paste0("S1_images", "[[1]]") - 所以不要noquotecat - 告诉我会发生什么

标签: r paste cat


【解决方案1】:

您可以使用

创建变量
condition_2 <- parse(text = paste0("S1_images", "[[1]]"))


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

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

【讨论】:

    猜你喜欢
    • 2020-10-03
    • 1970-01-01
    • 2022-12-14
    • 2016-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-09
    相关资源
    最近更新 更多