将数据帧添加到嵌套 for 循环中的嵌套列表,如:listname[[xx]][yy] <- value
Add dataframe to a nested list in a nested for-loop, as in: listname[[xx]][yy] <- value
我有一个嵌套循环,在此期间我想将数据帧添加到列表中,如:
listname <- list()
for(xx in 1:50) {
listname[[xx]] <- list()
for(yy in 1:25) {
my_df <- data.frame(aa = c(1,2,".."), bb = c(1,2,".."))
listname[[xx]][yy] <- my_df
}
}
但是,我收到警告消息:
"要替换的项目数不是替换长度的倍数"
... 结果,listname[[xx]][yy]
中只有 my_df$aa
,my_df$bb
中没有。
用这种方法完成嵌套数据框列表的更合适方法是什么?
谢谢!
编辑:找到解决方案! 事实证明,唯一的错误是缺少进一步的支架。应该是 listname[[xx]][[yy]] <- my_df
。感谢 Ben 的评论;现在可以使用了。
您可以尝试使用 replicate
来获取这样的数据帧嵌套列表。
my_df <- data.frame(aa = c(1,2,".."), bb = c(1,2,".."))
listname <- replicate(50, replicate(25,
my_df, simplify = FALSE), simplify = FALSE)
您需要使用双括号 [[
作为 yy
来存储您的数据框,如下所示:
listname[[xx]][[yy]] <- my_df
在处理列表时使用 [[
很重要,因为用 [
对列表进行子集化(单独使用单个括号)总是 returns 一个较小的列表。
要了解差异,请查看 listname[[1]][1]
:
[[1]]
aa bb
1 1 1
2 2 2
3 .. ..
这是一个返回的列表。
然后我们可以和listname[[1]][[1]]
比较:
aa bb
1 1 1
2 2 2
3 .. ..
这是一个data.frame.
在这种情况下,当您想要用 data.frame 替换列表中的单个值时,您需要使用 [[
.
我有一个嵌套循环,在此期间我想将数据帧添加到列表中,如:
listname <- list()
for(xx in 1:50) {
listname[[xx]] <- list()
for(yy in 1:25) {
my_df <- data.frame(aa = c(1,2,".."), bb = c(1,2,".."))
listname[[xx]][yy] <- my_df
}
}
但是,我收到警告消息:
"要替换的项目数不是替换长度的倍数"
... 结果,listname[[xx]][yy]
中只有 my_df$aa
,my_df$bb
中没有。
用这种方法完成嵌套数据框列表的更合适方法是什么?
谢谢!
编辑:找到解决方案! 事实证明,唯一的错误是缺少进一步的支架。应该是 listname[[xx]][[yy]] <- my_df
。感谢 Ben 的评论;现在可以使用了。
您可以尝试使用 replicate
来获取这样的数据帧嵌套列表。
my_df <- data.frame(aa = c(1,2,".."), bb = c(1,2,".."))
listname <- replicate(50, replicate(25,
my_df, simplify = FALSE), simplify = FALSE)
您需要使用双括号 [[
作为 yy
来存储您的数据框,如下所示:
listname[[xx]][[yy]] <- my_df
在处理列表时使用 [[
很重要,因为用 [
对列表进行子集化(单独使用单个括号)总是 returns 一个较小的列表。
要了解差异,请查看 listname[[1]][1]
:
[[1]]
aa bb
1 1 1
2 2 2
3 .. ..
这是一个返回的列表。
然后我们可以和listname[[1]][[1]]
比较:
aa bb
1 1 1
2 2 2
3 .. ..
这是一个data.frame.
在这种情况下,当您想要用 data.frame 替换列表中的单个值时,您需要使用 [[
.