R使用lapply,sapply和vapply来获取命名的数据帧列表

时间:2016-10-14 18:07:54

标签: r lapply sapply

我想使用功能程序来解决这个问题

prob.designs= list()
prob.designs$UF1 = data.table(sigma = c(0, 0,01, 0.1, 1))
prob.designs$UF2 = data.table(sigma = c(0, 0,01, 0.1, 1))
...
prob.designs$UF10 = data.table(sigma = c(0, 0,01, 0.1, 1))

我尝试以下代码,它生成一个数据帧列表,但列表的元素未命名为UF1,UF2 ......

prob.designs = lapply(paste("UF", 1:10, sep = ""), FUN = function(colname){
  prob.designs[[eval(colname)]]=data.table(sigma = c(0, 0.01, 0.1 ,1))}
)

由于列表的名称变为UF1.sigma而不是UF1,所以sapply工作但是方式错误

prob.designs = sapply(paste("UF", 1:10, sep = ""), FUN = function(colname){
  prob.designs[[eval(colname)]]=data.table(sigma = c(0, 0.01, 0.1 ,1))}
)

最后,我尝试了vapply,但这更奇怪

prob.designs = vapply(paste("UF", 1:10, sep = ""), FUN = function(colname){
  prob.designs[[eval(colname)]]=data.table(sigma = c(0, 0.01, 0.1 ,1))}
  , FUN.VAL = data.table(sigma = c(0, 0.01, 0.1 ,1))
)

现在列表的名称是正确的,即UF1,UF2,... UF10 但现在列表中的每个元素都不是数据帧!

有人可以帮我解释这三个案件的情况,最重要的是,这样做的正确方法是什么?

0 个答案:

没有答案
相关问题