【发布时间】:2013-11-19 09:24:18
【问题描述】:
我正在尝试编写一个根据第二个参数执行不同操作的函数。但我一直收到错误。根据矩阵的维度,函数应该执行不同的任务。这是一个例子
x<-cbind(X1,X2,X3)
function<-function(x,hnrstr){
if (hnrstr<-1){
x<-data.frame(X1=x[1],X2=x[2],X3=x[3])
y<-x
y[ ,"X2","X3"]<- gsub(" {2, }"," ",y[ ,"X2","X3"])
}
if (hnrstr<-2){
x<-data.frame(X1=x[1],X2=x[2])
P<-x
}
if (hnrstr<-1){
x<-y
}
if (hnrstr<-2){
x<-P
}
return(x)
}
apply(x,c(3,3), function(x,1))
我收到错误:
Error in drop && !has.j : invalid 'x' type in 'x && y'
【问题讨论】:
-
您能否在运算符周围添加一些空格,以便我们知道您是否/何时使用小于符号
<,以及何时使用赋值运算符<-?另外,对于这类问题,我一般也会考虑switch作为替代方案。 -
我认为在你的 if 语句中,测试应该是例如如果 (hnrstr==2),而不是 (hnrstr
-
我放入了交换机操作员。
switch(hnrstr, "1"={ .....}, "2"={....})但对于apply(x,1,strassestand(x,"1"))仍然是同样的错误 -
apply 语句应该是
apply(x, 1, strassestand, hnrstr=1)