Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 如何在循环中以字符串形式获取变量名?_R_String_Variables_Names - Fatal编程技术网

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

我想创建一个函数来正确显示一些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 
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中的一个错误,后来被修复了(错误,因为行为没有记录并且不一致)。