在R中的列表上循环/打印

时间:2017-08-28 14:40:14

标签: r list loops printing

假设我有一个简单的列表

 v <- list(vec1=c(1,2,3), vec2=c(3,4,5, 6))

我想循环遍历这个列表并对其元素执行一些函数,因此作为输出我得到两个:特定元素的名称和函数的输出。例如:

for (i in v)
{print(sd(i)) 
}

在这种情况下,输出为:

 [1] 1
 [1] 1.290994

但我想看到这样的事情:

 $vec1
 [1] 1
 $vec2
 [1] 1.290994

因此,如果我的列表中有许多元素,那么我可以轻松找到每个输出引用的元素。我知道它有names()函数可以做,但我不能使它工作。

1 个答案:

答案 0 :(得分:1)

使用函数names()并输出列表:

result<-list()
for (i in 1:length(v))
{result[[i]]=sd(v[[i]])
}
names(result)<-names(v)

此方法的缺点是,如果结果列表小于或大于原始列表,它将分配错误的名称(例如,如果在循环上添加next语句或以其他方式跳过元素)。

如果可能,更容易的解决方案是遵循d.b的评论。