我在R中编写一些代码来构建数据框列表。在运行时,它需要在单独的选项卡中显示它创建的每个数据框。数据框和列表都是由几个嵌套的for循环创建的,它们是:
df.list <- vector("list", length(e))
i <- 1
for (...){
data <- as.data.frame(stuff)
j <- 1
for (...){
for (...){
[loop stuff]
data[j,] <- [more stuff]
}
}
df.list[[i]] <- data
i <- i + 1
}
问题是放置“查看”功能的位置。如果我在列表中添加第二个循环并显示数据框,那么它们都会被命名为“df.list”。如果我把视图(数据)放在df.list [[i]]&lt; - data之前,那么它们都被命名为“data”。让它们具有相同的名称对于这种情况来说是不可接受的情况。理想情况下,我可以将它们命名为我想要的任何字符串,但我会满足于任何合理可理解且可与其他数据帧区别开来的东西。
我知道我可以通过动态地将变量名称更改为datai来解决这个问题,其中i是列表索引,但这几乎总是错误的做事方式。
答案 0 :(得分:2)
我以为我永远不会使用eval(parse())
发布回答,但这是我能想到的唯一方法:
# sample data
df.list = list(mtcars, iris)
# name your list however you want the tabs to be named
names(df.list) = c("mtcars data", "this is iris")
for (i in seq_along(df.list)) eval(parse(text = sprintf("View(df.list[['%s']])", names(df.list)[i])))
这可能是你的意思&#34;动态地将变量名称改为datai,其中i是列表索引&#34;,我同意它几乎总是错误的。在这种情况下,它也可能是迄今为止最方便的方式。
答案 1 :(得分:1)
从评论中发布解决方案,以便我可以关闭:
View()函数将名称作为可选参数! View(data, name)
会显示data
并调用标签name