gpt4 book ai didi

R中的Reduce()超过导致错误的相似变量名称

转载 作者:行者123 更新时间:2023-12-04 10:35:20 26 4
gpt4 key购买 nike

我有 19 个嵌套列表是通过 lapply 和 split 操作生成的。这些列表的形式是:

#list1
Var col1 col2 col3
A 2 3 4
B 3 4 5

#list2
Var col1 col2 col3

A 5 6 7
B 5 4 4

......

#list19

Var col1 col2 col3

A 3 6 7
B 7 4 4

我已经能够将列表与

合并
merge.all <- function(x, y) merge(x, y, all=TRUE, by="Var")
out <- Reduce(merge.all, DataList)

但是,由于其他列名称的相似性,我收到了一个错误。

如何将列表名称连接到变量名称,以便得到如下内容:

Var list1.col1 list1.col2 list1.col3  ..........   list19.col3
A 2 3 4 7
B 3 4 5 .......... 4

最佳答案

我真的很确定有人会想出一个好得多的解决方案。但是,如果您寻求的是一种快速而肮脏的解决方案,这似乎可行。

我的计划是在合并之前简单地更改列名。

#Sample Data
df1 <- data.frame(Var = c("A","B"), col1 = c(2,3), col2 = c(3,4), col3 = c(4,5))
df2 <- data.frame(Var = c("A","B"), col1 = c(5,5), col2 = c(6,4), col3 = c(7,5))
df19 <- data.frame(Var = c("A","B"), col1 = c(3,7), col2 = c(6,4), col3 = c(7,4))

mylist <- list(df1, df2, df19)
names(mylist) <- c("df1", "df2", "df19") #just manually naming, presumably your list has names


## Change column names by pasting name of dataframe in list with standard column names. - using ugly mix of `lapply` and a `for` loop:

mycolnames <- colnames(df1)
mycolnames1 <- lapply(names(mylist), function(x) paste0(x, mycolnames))


for(i in 1:length(mylist)){
colnames(mylist[[i]]) <- mycolnames1[[i]]
colnames(mylist[[i]])[1] <- "Var" #put Var back in so you can merge
}



## Merge
merge.all <- function(x, y)
merge(x, y, all=TRUE, by="Var")

out <- Reduce(merge.all, mylist)
out


# Var df1col1 df1col2 df1col3 df2col1 df2col2 df2col3 df19col1 df19col2 df19col3
#1 A 2 3 4 5 6 7 3 6 7
#2 B 3 4 5 5 4 5 7 4 4

你去吧 - 它有效但非常丑陋。

关于R中的Reduce()超过导致错误的相似变量名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28378637/

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