gpt4 book ai didi

r - 在 dplyr 序列中使用 data.frame 返回函数

转载 作者:行者123 更新时间:2023-12-01 03:45:19 25 4
gpt4 key购买 nike

我想使用 dplyr 的 data.frame 返回函数从 Excel 文件中读取数据,我想轻松配置其位置。在这里,我使用简化的 get_table() 函数和两个生成的 data.frames 来展示我的问题。实际上 get_table() 函数从服务器获取数据并解析它。

从 dplyr 调用该函数时,应合并所有 data.frame 结果。这是简化的代码:

files <- read.table(header=T, text='
type filename
A A_table
B B_table
')

A_table <- read.table(header=T, text='
area observations
K1 5
K2 9
')

B_table <- read.table(header=T, text='
area observations
K1 23
K2 28
K3 1
')

get_table <- function(name) {
return(get(name))
}

我可以用 lapply 读取文件:
list <- as.vector(files[,2])
t <- lapply(list, get_table)
do.call("rbind", t)

并将结果合并为:
  area observations
1 K1 5
2 K2 9
3 K1 23
4 K2 28
5 K3 1

然而,我想学习在 dplyr 风格中做同样的事情,做这样的事情(但工作 - 这不会):
files %>%
select(filename) %>%
rowwise() %>%
get_table()

最佳答案

正如@Richard Scriven 所指出的,filename应该是性格。

files <- read.table(header=T, stringsAsFactors=FALSE, text='
type filename
A A_table
B B_table
')

申请 do到您的代码的最后一行实现与 lapply(files[ ,2], get) %>% rbind_all 相同的结果.
files %>%
rowwise() %>%
do(get_table(.$filename))

#Groups: <by row>

# area observations
#1 K1 5
#2 K2 9
#3 K1 23
#4 K2 28
#5 K3 1

关于r - 在 dplyr 序列中使用 data.frame 返回函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27476598/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com