为什么我不能使用paste在c()中构造字符串?
c("SomeKey" = 123)
是好的并打印为:
SomeKey
123
但
a1 <- "Some"
a2 <- "Key"
c(paste(a1, a2) = 123)
产生
Error: unexpected '=' in " c(paste(a1, a2) ="
奇怪的是,我可以这样做:
key <- paste(a1, a2)
c(key = 123)
答案 0 :(得分:6)
您正在寻找setNames
,它返回具有指定名称和值的命名向量:
setNames(123, paste0(a1, a2))
# SomeKey
# 123
all.equal(setNames(123, paste0(a1, a2)), c("SomeKey" = 123))
# [1] TRUE
答案 1 :(得分:2)
因为paste()
或paste0()
返回一个字符向量 - 它可以返回大于长度为1的向量。您正在尝试将矢量指定为单个对象的名称。为什么不在事后命名向量?
a = c(123,456)
names(a)=c(paste0("Some","Key"),paste0("Some","Other","Key"))
a
#> SomeKey SomeOtherKey
123 456
答案 2 :(得分:0)
您可能正在寻找assign
。您可能希望使用paste0
,因为它不会在它粘贴的内容之间留出空格......或sep=""
与paste
> a1 <- "Some"
> a2 <- "Key"
> assign(paste(a1, a2), 123)
> ls()
[1] "a1" "a2" "Some Key"
> `Some Key`
[1] 123