R: аргумент имеет нулевую длину - PullRequest
0 голосов
/ 31 мая 2019

Я получаю сообщение об ошибке argument is of length zero, когда передаю свой фрейм данных и соответствующие ему столбцы пользовательской функции.

Я создал функцию, которая проверяет, равно ли значение в одном столбце значению в любом другом столбце, и должно возвращать значение в новом столбце кадра данных с именем data$group.

//Name of Data Frame is 'data'


bucket.function<-function(df2, a, b, c, d, e, f, g, h, i) {

 if(df2$a==df2$b)
        result<- "if"

 else if(df2$a==df2$c)
        result<-"df"

 else if(df2$a==df2$d)
        result<-"bus"

 else if(df2$a==df2$e)
        result<-"car"


    else if(df2$a==df2$f)
        result<-"train"

    else if(df2$a==df2$g)
        result<-"exp"

    else if(df2$a==df2$h)
        result<-"dh"

    else if(df2$a==df2$i)
        result<-"ih"

    else 
        result<- "NA"

    return(result)
}

data$group <- bucket.function(data, "latest_txn_date", "if_last_txn_date", "df_last_txn_date", "b_last_txn_date", "car_last_txn_date", "train_last_txn_date", "exp_last_txn_date", "dh_last_txn_date", "ih_last_txn_date")

Я ожидаю, что вывод будет столбцом значений в data$group, который содержит значения, возвращаемые для каждого значения d$a, здесь data$latest_txn_date

1 Ответ

0 голосов
/ 31 мая 2019

df2$a отсутствует в вашем фрейме данных, поскольку у вас нет столбца a. Вы должны получить к нему доступ с помощью df2[[a]], который оценивает значение a /. Это тот же принцип для аргументов a до i. Кроме того, вы сравниваете два вектора в ваших if условиях. Я предполагаю, что вы хотите разные результаты для каждой строки. Пожалуйста, посмотрите на функцию switch.

...