0

我正在尝试将year.f1990我生成的一些时间虚拟对象(例如)包含到一个命令(eba来自 ExtremeBounds 包)中,该命令接受形式为 `c("variable1","variable2","variable3") 的向量,因此字符串由逗号。我无法为我的时间假人生成这样的向量。拿:

Data <- data.frame(year.f1 = c(1,0), year.f2 = c(0,1))

所以我想要和元素一模一样c("year.f1","year.f2")

我设法得到了c("year.f1,year.f2")c("year.f1" "year.f2")两个命令:

test1 <- paste(names(Data)[grepl("year.f",names(Data),fixed=TRUE)],collapse = ",")
test2 <- names(Data)[grepl("year.f",names(Data),fixed=TRUE)]

但这些都不是我所需要的。第一个错过了单个元素周围的引号,第二个错过了逗号。我想用逗号分隔,每个元素都用“...”框起来。任何帮助,将不胜感激!

ps:来自以下评论:

这个:

variables <- c("var1","var2",test1,"var3") 

应该像这样工作:

variables <- c("var1","var2","year.f1","year.f2","var3")
4

1 回答 1

0

这不是“用逗号分隔的字符串”......尽管每个元素都被双引号显示,但它实际上在内部表示中的字符中没有引号。双引号字符的Agrep(..)将失败。

c("variable1","variable2","variable3") 

它是一个由 3 个字符值组成的向量(如果您愿意,可以使用字符串,但其中没有逗号。)逗号实际上并不在该值中,而是解释器用来构造向量值的语法分隔符。盯着:

  Data <- data.frame(year.f1 = c(1,0), year.f2 = c(0,1))

获得与以下值相同的值的方法c("year.f1","year.f2")是:

 names(Data)

如果您一开始是:

  variables <- c("var1","var2",test1,"var3") 

那么这就是返回所需结果的方法

test1 <- names(Data)
variables <- c("var1", "var2", test1, "var3")

值:c("year.f1, year.f2")不会特别有用,。由于缺少(真实)逗号两侧的双引号,因此无法正确解析它。

为了解决修改后的问题,这应该满足:

hits <- names(Data)
variables <- c("var1", "var2", hits[grepl("year\\.f", hits)], "var3")
于 2015-10-07T03:06:56.960 回答