在R中使用粘贴,包括逗号

时间:2015-07-06 19:23:20

标签: r paste

我想在R中粘贴一个包含逗号的字符串(如下所示):如何将其转义?

variable <-"string"

命令1:

lm(paste(variable," ~ ., DATA",sep=""))

错误讯息1:

Error in parse(text = x) : <text>:1:9: unexpected ','

命令2:

lm(paste(variable," ~ .\, DATA",sep=""))

错误消息2:

Error: '\,' is an unrecognized escape in character string starting "" ~ .\,"

期望的输出:

lm(string ~ ., DATA)

我理解为什么我收到错误消息,但我无法弄清楚如何使用粘贴打印文字逗号。

编辑:同意粘贴工作正常,在lm()内,这会导致问题吗?

2 个答案:

答案 0 :(得分:2)

您的问题不在粘贴中。它在lm。在公式中不会出现逗号,所以当它转换你的粘贴字符串(它正常工作,将它从lm中拉出来,你会看到这个)到一个公式时,它会对你进行barfs。

此外,鉴于您期望发生的事情,这不是正确的方法。如果你想在这个例子中进行元编程,你应该将整个命令(即lm(string ~ ., DATA))构造为一个字符串,然后使用evalparse。所有这些都说,这是一个绝对可怕的编程范式。只需正常构造函数调用或至少使用do.call

答案 1 :(得分:0)

我只是想在编辑部分中首先提出nicola的评论,并且iShouldUseAName对该公式的警告。例如,下面的工作,我认为它接近你正在做的事情。

X <- 1:5
Y <- 2:6
Z <- 3:7
variable <- "X"
data <- as.data.frame(cbind(X, Y, Z))
lm(paste(variable," ~ Z",sep=""),data)

那么如果你想在几个变量中循环lm(这是我过去尝试使用“粘贴”的方式),你可以做类似下面的事情。如果这不是你要去的地方,请道歉:

for (C in c("X","Y")) {
  out <- lm(paste(C," ~ Z",sep=""),data)
  print(out)
}