c()中的奇怪行为

jco*_*ens 1 r

为什么我不能使用paste在c()中构造一个字符串?

c("SomeKey" = 123)
Run Code Online (Sandbox Code Playgroud)

好的,打印为:

SomeKey 
    123 
Run Code Online (Sandbox Code Playgroud)

a1 <- "Some"
a2 <- "Key"
c(paste(a1, a2) = 123)
Run Code Online (Sandbox Code Playgroud)

生产:

Error: unexpected '=' in "    c(paste(a1, a2) ="
Run Code Online (Sandbox Code Playgroud)

奇怪的是,我可以做到这一点:

key <- paste(a1, a2)
c(key = 123)
Run Code Online (Sandbox Code Playgroud)

jos*_*ber 6

您正在寻找setNames,它返回具有指定名称和值的命名向量:

setNames(123, paste0(a1, a2))
# SomeKey 
#     123 
all.equal(setNames(123, paste0(a1, a2)), c("SomeKey" = 123))
# [1] TRUE
Run Code Online (Sandbox Code Playgroud)