假设我有一个简单的列表
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()
函数可以做,但我不能使它工作。
答案 0 :(得分:1)
使用函数names()
并输出列表:
result<-list()
for (i in 1:length(v))
{result[[i]]=sd(v[[i]])
}
names(result)<-names(v)
此方法的缺点是,如果结果列表小于或大于原始列表,它将分配错误的名称(例如,如果在循环上添加next
语句或以其他方式跳过元素)。
如果可能,更容易的解决方案是遵循d.b的评论。