首页 > 解决方案 > 如何在循环中将变量的名称作为字符串获取?

问题描述

我想创建一个函数来正确显示一些 R 变量的名称。

我尝试使用deparse(substitute(variable))which 工作正常,但我无法让它在循环中工作

a = 5
b = 6
c = 7
myobjects = c(a, b, c)

for (i in 1:3){
  cat(deparse(substitute(myobjects [i])), " : ", myobjects [i], "\n")
}

返回

myobjects[i]  :  5 
myobjects[i]  :  6 
myobjects[i]  :  7

代替

a : 5
b : 6
c : 7

标签: rstringvariablesnames

解决方案


“myobjects”仅包含对象“a”、“b”、“c”的值。如果我们需要获取原始对象,创建一个命名vector并获取names

myobjects <- c(a = a, b = b, c = c)
for(i in 1:3) cat(names(myobjects[i]), " : ", myobjects[i], "\n")
#a  :  5 
#b  :  6 
#c  :  7 

或者正如评论中提到的@IceCreamToucan,它可以像矢量化一样被矢量化(没有循环forpaste

cat(paste0(names(myobjects), ' : ', myobjects), '\n', sep = '\n')

推荐阅读