gpt4 book ai didi

减少 R 中函数的额外参数

转载 作者:行者123 更新时间:2023-12-04 10:03:18 31 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





How to write the dataframes in a list to a single csv file

(2 个回答)


5年前关闭。




我正在尝试使用 Reduce R 中的函数以使用 merge跨多个数据帧的功能。问题是,我想使用带有参数 all=T 的合并函数,并且似乎无处可在高阶 Reduce 中指定这一点功能。

所以我想:

a <- data.frame(id=c(1, 2, 3, 4), a=c('a', 'b', 'c', 'd'))
b <- data.frame(id=c(1, 2, 5, 6), b=c('a', 'b', 'e', 'f'))
c <- data.frame(id=c(3, 4, 5, 6), c=c('c', 'd', 'e', 'f'))

out <- Reduce(merge, list(a, b, c), all=T)

out
id a b c
1 1 a a <NA>
2 2 b b <NA>
3 3 c <NA> c
4 4 d <NA> d
5 5 <NA> e e
6 6 <NA> e e

但是因为 merge默认为 all=F ,我得到的是:
[1] id a  b  c 
<0 rows> (or 0-length row.names)

最佳答案

据我所知,Reduce还不能处理要传递给函数参数的额外参数。但是你可以重新定义merge带有自定义参数的函数并将其作为匿名函数传递给 Reduce :

Reduce(function(x, y) merge(x, y, by = "id", all = T), list(a, b, c))

# id a b c
#1 1 a a <NA>
#2 2 b b <NA>
#3 3 c <NA> c
#4 4 d <NA> d
#5 5 <NA> e e
#6 6 <NA> f f

关于减少 R 中函数的额外参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39000509/

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