向量的长度(如果由ls引起)

时间:2018-08-21 17:38:59

标签: r

我是R语言的初学者,所以很抱歉如果以前在这里提出过这个问题,但是我没有找到类似的东西:

我需要的只是从命令中返回向量的 length (在环境中我有两个长度分别为5和6的向量),并与 ls

 for (i in ls()) {print (length(noquote(i)))}  

但是,对于两个向量,它都返回1。

感谢您的提示。

2 个答案:

答案 0 :(得分:1)

ls()返回一个字符串向量(类型为character)。您正在遍历这些字符串,从中删除引号,然后询问这些character对象有多长时间。

您要执行的操作是使用给定名称访问object。为此,请将对象名称作为character传递给函数getget将接受对象的名称,在环境中进行搜索,然后返回实际对象(如果存在)。然后,您可以将其传递到length中以获取对象的长度:

for (i in ls()) {print (length(get(i)))}

答案 1 :(得分:1)

我们可以将sapplymget一起使用来计算全局环境中每个对象的长度。 mget采用带有对象名称的字符向量(在这种情况下,是ls()返回的全局环境中对象名称的向量),并返回存储在每个名称中的对象列表。 sapply然后计算列表中每个元素的length并返回一个长度向量:

sapply(mget(ls()), length)