在 R 中使用粘贴,包括逗号
Using paste in R including a comma
我想在 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)
我明白为什么会收到错误消息,但我不知道如何使用粘贴打印文字逗号。
编辑:同意 paste 单独工作正常,在 lm() 内部,这会导致问题吗?
您的问题不在粘贴中。它在 lm
中。逗号不应该出现在公式中,因此当它将您粘贴的字符串(可以正常工作,将其从 lm
中拉出,您将看到它)转换为公式时,它会向您吐槽。
此外,考虑到您预期会发生的情况,这不是正确的处理方式。如果你想在这种情况下像这样进行元编程,你应该将整个命令(即 lm(string ~ ., DATA)
)构造为一个字符串,然后使用 eval
和 parse
。综上所述,这是一个绝对糟糕的编程范式。只需正常构造函数调用或至少使用 do.call
.
我只想赞同上面编辑部分中尼古拉的评论,以及 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(这就是我过去尝试使用 "paste" 的方式),您可以执行如下所示的操作。抱歉,如果这不是您要处理的地方:
for (C in c("X","Y")) {
out <- lm(paste(C," ~ Z",sep=""),data)
print(out)
}
我想在 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)
我明白为什么会收到错误消息,但我不知道如何使用粘贴打印文字逗号。
编辑:同意 paste 单独工作正常,在 lm() 内部,这会导致问题吗?
您的问题不在粘贴中。它在 lm
中。逗号不应该出现在公式中,因此当它将您粘贴的字符串(可以正常工作,将其从 lm
中拉出,您将看到它)转换为公式时,它会向您吐槽。
此外,考虑到您预期会发生的情况,这不是正确的处理方式。如果你想在这种情况下像这样进行元编程,你应该将整个命令(即 lm(string ~ ., DATA)
)构造为一个字符串,然后使用 eval
和 parse
。综上所述,这是一个绝对糟糕的编程范式。只需正常构造函数调用或至少使用 do.call
.
我只想赞同上面编辑部分中尼古拉的评论,以及 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(这就是我过去尝试使用 "paste" 的方式),您可以执行如下所示的操作。抱歉,如果这不是您要处理的地方:
for (C in c("X","Y")) {
out <- lm(paste(C," ~ Z",sep=""),data)
print(out)
}