我有两个数据帧/home/test1
的列表。每个数据帧包含三列df1 and df2
。嵌套在val1 val2 and bb
中的是另一个包含4列的2列表-请参见下面的bb
。
当我使用tail(my.list$df1, n=3)
导出时,所有列都出现在write.csv
文件中,并且输出看起来与.csv
完全一样。但是,由于缺乏更好的用语,我想将tail(my.list$df1, n=3)
列上移一层,以便能够调用,操纵和/或合并bb.dn bb.mavg bb.up bb.pctB
列与其他数据帧或在我的代码中列出。
可复制:
bb.dn bb.mavg bb.up bb.pctB
这是library(TTR)
library(tidyverse)
library(plyr)
# reproducible example
set.seed(1363)
d1 <- data.frame(val1 = c(rnorm(n=65, mean=15)), val2 = c(rnorm(n=65,
mean=15)))
d2 <- data.frame(val1 = c(rnorm(n=35, mean=12)), val2 = c(rnorm(n=35,
mean=25)))
my.list <- list(df1 = d1, df2 = d2)
for (i in seq_along(my.list)) {
my.list[[i]] <- my.list[[i]] %>%
mutate(bb = BBands(val2, n = 20, sd = 2))
}
中数据帧2的结构:
my.list
这是“ 2的列表”中的列表,其中包含我要向上移动一级的4列:
> str(my.list$df2)
'data.frame': 35 obs. of 3 variables:
$ val1: num 11.1 11.4 10.9 13.9 12.6 ...
$ val2: num 25.1 25.7 24.6 25.2 26 ...
$ bb : num [1:35, 1:4] NA NA NA NA NA NA NA NA NA NA ...
..- attr(*, "dimnames")=List of 2
.. ..$ : NULL
.. ..$ : chr "dn" "mavg" "up" "pctB"
答案 0 :(得分:2)
我们可以使用map
中的purrr
library(purrr)
map(my.list, as.data.frame.list)
set.seed(1363)
d1 <- data.frame(val1 = c(rnorm(n=65, mean=15)),
val2 = c(rnorm(n=65, mean=15)))
d2 <- data.frame(val1 = c(rnorm(n=35, mean=12)),
val2 = c(rnorm(n=35, mean=25)))
my.list <- list(df1 = d1, df2 = d2)
for(i in seq_along(my.list)) my.list[[i]][["bb"]] <-
BBands(my.list[[i]]$val2, n=20, sd = 2)
答案 1 :(得分:1)
您正在寻找:
setNames(Map(do.call,c(data.frame),my.list),names(my.list))