2016-01-18 5 views
0

Как новичок в R, я хотел бы понять, как написать функцию, которая принимает несколько двух фреймов данных и возвращает слияние. Я попытался с:Объединить кадры данных как функцию

mer<-function(df1 , df2){ 
    zz <- merge(df1, df2,by.x = wt,by.y= wt, all = TRUE) 
    zz[is.na(zz)] <- 0 
    return(zz) 
} 

Но ошибкой я получаю

Ошибки в fix.by (by.y, у): 'на' должна соответствовать количеству столбцов

+2

Вы должны определить, что такое wt – rawr

+2

Если wt - это имя столбца, то оно должно быть внутри кавычек. – Mist

ответ

0

Вам не хватает нескольких вещей. Сначала я передавал переменные в качестве аргументов. Это делает вашу функцию более явной. Во-вторых, в пределах merge переменные функции должны быть переданы в виде скобки, то есть «wt».

mer <- function(df1 , df2, var1, var2){ 
    zz <- merge(df1, df2, by.x = var1, by.y= var2, all = TRUE) 
    zz[is.na(zz)] <- 0 
    return(zz) 
} 

При использовании mer, не забудьте передать var1 и var2 в качестве символов, т.е. mer(d1, d2, "wt1", "wt2").

последний пункт. Если имя, которое вы объединяете, одинаково для баз данных (т. Е. Оба являются wt), вы можете просто использовать by="wt".

+0

спасибо за объяснение. Теперь действительно очень ясно, как использовать функцию слияния /. – Prashanth

Смежные вопросы