Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
正在尝试对列表应用函数plyr::ldply以转换为不同行数的data.frame_R - Fatal编程技术网

正在尝试对列表应用函数plyr::ldply以转换为不同行数的data.frame

正在尝试对列表应用函数plyr::ldply以转换为不同行数的data.frame,r,R,我试图应用plyr包中的ldply函数将列表转换为数据帧,但一直遇到错误。我应用以下行: final <- plyr::ldply(data, data.frame) 列表是否必须具有相同的行数?我想既然我试图绑定行,那么每个列表中只有列需要相等 数据: 编辑: 好吧,我意识到问题可能在于列表中的两个元素具有不同的列名。运行: 我想这解决了我的问题: info <- do.call("rbind", lapply(data, "[[", 1)) filing <- do.ca

我试图应用
plyr
包中的
ldply
函数将列表转换为数据帧,但一直遇到错误。我应用以下行:

final <- plyr::ldply(data, data.frame)
列表是否必须具有相同的行数?我想既然我试图绑定行,那么每个列表中只有列需要相等

数据:

编辑:

好吧,我意识到问题可能在于列表中的两个元素具有不同的列名。运行:


我想这解决了我的问题:

info <- do.call("rbind", lapply(data, "[[", 1))
filing <- do.call("rbind", lapply(data, "[[", 2))
info%
左联合(,,info,by=“cik”)

事实上,您可能希望颠倒您的
dplyr::left_join
中的顺序,因为信息中包含的clk多于归档。后者在原始列表中维护两个空数据帧

library(dplyr)
library(tibble)

info <- do.call("rbind", lapply(data, "[[", 1))
filing <- do.call("rbind", lapply(data, "[[", 2))

final_df_op <- info %>%
                  left_join(filing %>%
                            tibble::rownames_to_column(., "cik") %>%
                            mutate(cik = gsub("\\..*", "", cik)), by = "cik")

str(final_df_op)
# 'data.frame': 51 obs. of  30 variables:
#  $ name               : chr  "AAR CORP" "AAR CORP" "AAR CORP" "AAR CORP" ...
#  $ cik                : chr  "0000001750" "0000001750" "0000001750" "0000001750" ...
#  $ fiscal_year_end    : chr  "0531" "0531" "0531" "0531" ...
# ...

该列表称为
data
。我只是尝试将列表再次导入到我的环境中,没有任何问题。它应该只是6个元素的列表。
info <- do.call("rbind", lapply(data, "[[", 1))
filing <- do.call("rbind", lapply(data, "[[", 2))
x <- filing %>%
  rownames_to_column(., "cik") %>%
  mutate(cik = gsub("\\..*", "", cik)) %>%
  left_join(., info, by = "cik")
library(dplyr)
library(tibble)

info <- do.call("rbind", lapply(data, "[[", 1))
filing <- do.call("rbind", lapply(data, "[[", 2))

final_df_op <- info %>%
                  left_join(filing %>%
                            tibble::rownames_to_column(., "cik") %>%
                            mutate(cik = gsub("\\..*", "", cik)), by = "cik")

str(final_df_op)
# 'data.frame': 51 obs. of  30 variables:
#  $ name               : chr  "AAR CORP" "AAR CORP" "AAR CORP" "AAR CORP" ...
#  $ cik                : chr  "0000001750" "0000001750" "0000001750" "0000001750" ...
#  $ fiscal_year_end    : chr  "0531" "0531" "0531" "0531" ...
# ...
info <- do.call("rbind", mapply(function(d, n) transform(d[[2]], cik=n),
                                data, names(data), SIMPLIFY=FALSE, USE.NAMES=FALSE))

# TRY CATCH TO ACCOUNT FOR ZERO-ROW DF ERRORS    
filing <- do.call("rbind", mapply(function(d, n) 
                                  tryCatch(transform(d[[2]], cik=n),
                                           error = function(e) NA),
                                  data, names(data), SIMPLIFY=FALSE, USE.NAMES=FALSE))

# LEFT JOIN MERGE
final_df <- merge(info, filing, by="cik", all.x=TRUE)

str(final_df)
# 'data.frame': 51 obs. of  30 variables:
#  $ cik                : chr  "0000001750" "0000001750" "0000001750" "0000001750" ...
#  $ name               : chr  "AAR CORP" "AAR CORP" "AAR CORP" "AAR CORP" ...
#  $ fiscal_year_end    : chr  "0531" "0531" "0531" "0531" ...
#  ...