r语言 - full_join错误 由于不兼容的类型无法加入:整数/字符 - 但有时有效?



我有两个数据帧列表(df1和df2(。列表和数据帧的类和4列是相同的,但它们包含的行数或数据数不相同:

df1.1=

Col1 Col2 Col3 Col4
chr  chr  num  num

df2.1=

Col1 Col2 Col3 Col4
chr  chr  num  num 

每个列表100个数据帧。

它们存储在数据帧的主列表(df1(中,我在上使用lapply函数

我想将每个列表中的所有数据帧减少为一个数据帧。为此,我使用了:

reducedf1<-df1 %>% reduce (full_join);
reducedf2<-df2 %>% reduce(full_join);

对于df1来说,它起了作用。对于df2,它没有。给出的错误为:

Error in full_join_impl(x,y, by_x, by_y, aux_x, aux_y, na_matches) : Can't join on 'Col2' x 'Col2' because of incompatible types (integer/character). 

为了解决这个问题,我试图检查列表中是否有不具有相同类的数据帧,并更正它们:

testingfunction<-function(x){
col_to_change=x[,2];
class(col_to_change)<-"character";
x}
mutatedf2<-lapply(df2, testingfunction)

我检查了-在每个数据帧中仍然有类字符,但没有加入-相同的错误。

如果我的数据帧都有相同的类,并且它们是以相同的方式创建的,并放在相同的列表中——为什么在一个数据帧中它能工作,而在一个中它不能工作?有什么方法可以解决这个错误,这样我就可以使用reduce和full_join将列表中的数据帧合并为一个大数据帧?

我不知道为什么它发生在一个数据帧中,而不是另一个,但我解决了它:Editdf2<-lapply(df2, transform, Col2 = as.character(Col2));然后毫无问题地进行了reduce。

我假设Col2中列表中的1个数据帧有一个整数而不是字符的问题,但无法提前知道。

最新更新