在R中使用"粘贴"创建变量名称?

qed*_*qed 77 r

见下文:

 paste("perf.a", "1", sep="")
    [1] "perf.a1"
Run Code Online (Sandbox Code Playgroud)

如果我想分配值perf.a1怎么办?

我尝试了as.name,as.symbol等等,但无济于事:

as.name(paste("perf.a", "1", sep="")) = 5
Error in as.name(paste("perf.a", "1", sep = "")) = 5 : 
  target of assignment expands to non-language object
as.symbol(paste("perf.a", "1", sep="")) = 5
Error in as.symbol(paste("perf.a", "1", sep = "")) = 5 : 
  target of assignment expands to non-language object
noquote(paste("perf.a", "1", sep="")) = 5
Error in noquote(paste("perf.a", "1", sep = "")) = 5 : 
  target of assignment expands to non-language object
Run Code Online (Sandbox Code Playgroud)

lec*_*tif 112

您可以使用assign(doc)更改perf.a1的值:

> assign(paste("perf.a", "1", sep=""),5)
> perf.a1
[1] 5
Run Code Online (Sandbox Code Playgroud)

  • `assign(paste0("perf.a","1"),5)`有点整洁 (19认同)
  • 为什么这么难找! (3认同)

Rom*_*rik 15

?assign.

> assign(paste("tra.", 1, sep = ""), 5)
> tra.1
  [1] 5
Run Code Online (Sandbox Code Playgroud)


小智 8

在我的情况下,函数eval()工作得非常好.下面我生成10个变量并为它们分配10个值.

lhs <- rnorm(10)
rhs <- paste("perf.a", 1:10, "<-", lhs, sep="")
eval(parse(text=rhs))
Run Code Online (Sandbox Code Playgroud)