将数据框及其相应的列传递给自定义函数时,出现错误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
)返回的值
答案 0 :(得分:0)
df2$a
不在数据框中,因为您没有a
列。您必须使用df2[[a]]
来访问它,以评估a
/的值。参数a
至i
的原理相同。
此外,您在if
条件下比较两个向量。我假设您希望每一行都有不同的结果。请看一下函数switch
。