R 防止数据框列表中的名称消失

R 防止数据框列表中的名称消失,r,list,dataframe,R,List,Dataframe,所以我初始化了一个列表,我想用数据帧填充它: listz <- vector("list",2) listz当您分配 listz <- list(data.frame("id" = 1:3, "hat" = 1:3), data.frame("id" = 4:6, "hat" = 4:6)) 选项2-按需命名 选项4-使用setNames和get预先存在 备选案文6:) listz[]您可以在赋值点命名它们:listz是的,但是如果我在列表上运行一系列lap

所以我初始化了一个列表,我想用数据帧填充它:

listz <- vector("list",2)
listz当您分配

listz <- list(data.frame("id" = 1:3, "hat" = 1:3),
           data.frame("id" = 4:6, "hat" = 4:6))
选项2-按需命名 选项4-使用setNames和get预先存在 备选案文6:)


listz[]您可以在赋值点命名它们:
listz是的,但是如果我在列表上运行一系列lappy函数,每次都将其重新赋值为相同的名称,那就不方便了。我想在保留数据帧名称的同时咀嚼它们。
lappy
应该保留列表名称。我明白了,@mnel!我的错误是在将数据帧分配给列表之前先分配名称。如果我在那之后再做,即使我做了listz,名字也会留下来是的。您可以初始化名称,然后执行列表[[1]]+1哇,这是一个完整的方法列表!(尽管在我键入此内容时,我想知道是否有人会在注释中添加更多内容…)
listz <- list(data.frame("id" = 1:3, "hat" = 1:3),
           data.frame("id" = 4:6, "hat" = 4:6))

> names(listz)
NULL
listz <- list(data.frame("id" = 1:3, "hat" = 1:3),
           data.frame("id" = 4:6, "hat" = 4:6))
# Option 1 - using setNames
listz <- setNames(list(data.frame("id" = 1:3, "hat" = 1:3),
           data.frame("id" = 4:6, "hat" = 4:6)), listzNames)
# Option 2 - naming the list as you go
listz <- list(frame1 = data.frame("id" = 1:3, "hat" = 1:3),
           frame2 = data.frame("id" = 4:6, "hat" = 4:6))
# If your data.frames already exist
# use the llist function in Hmisc, which names the list
# using the names of the object in each element
library(Hmisc)
frame1 <- data.frame("id" = 1:3, "hat" = 1:3)
frame2 <- data.frame("id" = 4:6, "hat" = 4:6)

listz <- llist(frame1,frame2)
# if your data.frames already exist in the global environment then
# you can use
listz <- setNames(lapply(listzNames, get),listzNames)
listz <- vector("list",2)
names(listz) <- listzNames
listz[[1]] <- data.frame("id" = 1:3, "hat" = 1:3)
listz[[2]] <- data.frame("id" = 4:6, "hat" = 4:6)
lapply(listz,head,n=1)

#$frame1
#  id hat
#1  1   1
#
#$frame2
#  id hat
#1  4   4
listz[] <- list(data.frame("id" = 1:3, "hat" = 1:3),
                data.frame("id" = 4:6, "hat" = 4:6))