R 如何在循环中以字符串形式获取变量名?
我想创建一个函数来正确显示一些R变量的名称 我尝试使用R 如何在循环中以字符串形式获取变量名?,r,string,variables,names,R,String,Variables,Names,我想创建一个函数来正确显示一些R变量的名称 我尝试使用deparse(substitute(variable)),它工作得很好,但我无法使它在循环中工作 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
deparse(substitute(variable))
,它工作得很好,但我无法使它在循环中工作
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
“MyObject”仅包含对象“a”、“b”、“c”的值。如果需要获取原始对象,请创建一个命名的
向量
,然后获取名称
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
“MyObject”仅包含对象“a”、“b”、“c”的值。如果需要获取原始对象,请创建一个命名的
向量
,然后获取名称
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
您可以创建命名对象而不是
myobjects-c(a,b,c)
因为myobjects
只存储对象“a”、“b”、“c”的值。您可以创建命名对象而不是myobjects-c(a,b,c)
因为myobjects
只存储对象“a”、“b”、“c”或cat(名称)的值(myobjects),“:”,myobjects),sep=“\n')
@IceCreamToucan这是一个很好的建议,但要小心,您的语句缺少一个终止的'\n'
,这将导致它无法在某些系统上打印任何内容!(例如,我的系统)。由cat
打印的字符串必须用换行符终止。很高兴知道。因此它应该是cat(paste0(names(myobjects),“:”,myobjects),“\n',sep='\n')
而不是为了可移植性?@IceCreamToucan不幸的是,是的。我实际上认为这是macOS上R3.5中的一个bug,后来被修复了(bug,因为行为没有记录且不一致)。或者cat(paste0(名称(myobjects),“:”,myobjects),sep='\n'))
@IcecreamTou可能是个好建议,但请小心,您的语句缺少一个终止的'\n'
,这将导致它无法在某些系统上打印任何内容!(例如,我的系统)。由cat
打印的字符串必须由换行符终止。很高兴知道。因此它应该是cat(粘贴0(名称(myobjects),':',myobjects),'\n',sep='\n')
而不是为了可移植性?@IceCreamToucan不幸的是,是的。我实际上认为这是macOS上R3.5中的一个错误,后来被修复了(错误,因为行为没有记录并且不一致)。