这背景是我主要是一个熟悉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
语句的下标中。我知道这可能是一个非常新手的问题,但我很感激我能得到的任何帮助。
此外,我想增加较短列表元素长度的原因是我可以将列表放入数据框中。如果有一种方法可以做到这一点,如果没有弄乱长度,那将是很好的,虽然我仍然不介意我的第一个问题的答案,以满足我的好奇心,如果没有别的。
谢谢大家。我一直在挖掘这里的一些主题,你已经帮了我很多了!
答案 0 :(得分:3)
这是一种方式:
lapply(lnums, 'length<-', 5)