【问题标题】:Looping/printing over a list in R循环/打印R中的列表
【发布时间】:2017-08-28 14:40:14
【问题描述】:

假设我有一个简单的列表

 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() 可以做,但我不能让它工作。

【问题讨论】:

  • lapply(v, sd)
  • 谢谢,这确实很好用!但是,有没有办法通过某种循环或修改 lapply() 来做到这一点,因为事实上我有更复杂的例子?例如,我想在其上运行特定列的相关矩阵的数据框列表?

标签: r list loops printing


【解决方案1】:

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

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

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

如果可能,一个更简单的解决方案是遵循 d.b 的评论。

【讨论】:

    猜你喜欢
    • 2015-04-05
    • 2015-04-03
    • 2012-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-02
    • 1970-01-01
    • 2014-08-12
    相关资源
    最近更新 更多