访问和更改列表元素属性

时间:2013-05-23 20:27:58

标签: r list subscript

这背景是我主要是一个熟悉R的Python程序员。我的任务是查看由使用for的Perl程序员编写的R脚本。 while循环很多,看看我是否可以让它更像R-like并让它跑得更快。

例如,我有以下列表:

> lnums <- list(1:5, 6:7, 8:12)

对于长度小于5(lnums[[2]])的元素,我想将长度更改为5.原始代码使用for循环来标记NA值到任何较短的向量的末尾,我知道必须有一个比这更好的方法。我正在玩弄方法来实现它并想出了

> sapply(lnums, FUN=function(x) length(x) < 5)

获取正确的元素,但我无法弄清楚如何将其合并到length(lnums[]) <- 5语句的下标中。我知道这可能是一个非常新手的问题,但我很感激我能得到的任何帮助。

此外,我想增加较短列表元素长度的原因是我可以将列表放入数据框中。如果有一种方法可以做到这一点,如果没有弄乱长度,那将是很好的,虽然我仍然不介意我的第一个问题的答案,以满足我的好奇心,如果没有别的。

谢谢大家。我一直在挖掘这里的一些主题,你已经帮了我很多了!

1 个答案:

答案 0 :(得分:3)

这是一种方式:

lapply(lnums, 'length<-', 5)