【发布时间】:2015-01-27 11:31:51
【问题描述】:
我正在尝试使用正在运行的命令行创建一个函数。我正在为一个看起来像这样的数据集创建一个标识符
Nom Var1 Var2
N1 v11 v12
N2 . .
N2 . .
N3 V32 V32
我的命令是:transform(df$Nom, id=match(df$Nom, unique(df$Nom))) 并且工作正常。
但是,如果我写一个像 ht 之后的函数;我收到错误:“唯一适用于向量”
createid<-function(var){
x<- transform(var, id=match(var, unique(var)))
ids<-paste0("id_",x[,2])
return(ids)
}
df$id<-createid(df$Nom)
同样,如果 Y 编写以下函数,我会收到错误 错误 in d$var : object of type 'closure' is not subsettable
createid<-function(d,var){
x<- transform(d$var, id=match(d$var, unique(d$var)))
ids<-paste0("id_",x[,2])
return(ids)
}
df$id<-createid(d,Nom)
我认为你应该在 R 中编写函数的方式有一些我不理解的地方,尤其是当你在数据框内调用变量时。有人可以帮我弄这个吗? 谢谢
【问题讨论】:
-
能否也包括创建df?像 df
-
通常
transform第一个参数是data本身,而不是向量。 IE。transform(df, id=match(Nom, unique(Nom)))[-(2:3)] -
如果您分别传递
d和var参数,d$var将无法在函数中工作。请改用d[['var']]。这就是为什么您会收到Error in d$var : object of type 'closure' is not subsettable错误 -
@LyzanderR 请作为解决方案发布
-
@akrun 谢谢 Akrun :)。它只解决了他的一半问题,另一半由你解决哈哈。这就是我没有发帖的原因。
标签: database r function unique