R:参数长度为零

时间:2019-05-31 07:40:43

标签: r rstudio data-science

将数据框及其相应的列传递给自定义函数时,出现错误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 :(得分:0)

df2$a不在数据框中,因为您没有a列。您必须使用df2[[a]]来访问它,以评估a /的值。参数ai的原理相同。 此外,您在if条件下比较两个向量。我假设您希望每一行都有不同的结果。请看一下函数switch