The R Project SVN R

Rev

Rev 1841 | Rev 4179 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1841 Rev 1903
Line 135... Line 135...
135
	    }
135
	    }
136
	break;
136
	break;
137
    default:
137
    default:
138
	UNIMPLEMENTED("rep2");
138
	UNIMPLEMENTED("rep2");
139
    }
139
    }
-
 
140
    if (inherits(s, "factor")) {
-
 
141
	SEXP tmp;
-
 
142
	if(inherits(s, "ordered")) {
-
 
143
	    PROTECT(tmp = allocVector(STRSXP, 2));
-
 
144
	    STRING(tmp)[0] = mkChar("ordered");
-
 
145
	    STRING(tmp)[1] = mkChar("factor");
-
 
146
	}
-
 
147
	else {
-
 
148
	    PROTECT(tmp = allocVector(STRSXP, 1));
-
 
149
	    STRING(tmp)[0] = mkChar("factor");
-
 
150
	}
-
 
151
	setAttrib(a, R_ClassSymbol, tmp);
-
 
152
	UNPROTECT(1);
-
 
153
	setAttrib(a, R_LevelsSymbol, getAttrib(s, R_LevelsSymbol));
-
 
154
    }
140
    UNPROTECT(2);
155
    UNPROTECT(2);
141
    return a;
156
    return a;
142
}
157
}
143
 
158
 
144
SEXP rep(SEXP s, SEXP ncopy)
159
SEXP rep(SEXP s, SEXP ncopy)
Line 196... Line 211...
196
	    CAR(t) = duplicate(CAR(nthcdr(s, (i % ns))));
211
	    CAR(t) = duplicate(CAR(nthcdr(s, (i % ns))));
197
	break;
212
	break;
198
    default:
213
    default:
199
	UNIMPLEMENTED("rep");
214
	UNIMPLEMENTED("rep");
200
    }
215
    }
-
 
216
    if (inherits(s, "factor")) {
-
 
217
	SEXP tmp;
-
 
218
	if(inherits(s, "ordered")) {
-
 
219
	    PROTECT(tmp = allocVector(STRSXP, 2));
-
 
220
	    STRING(tmp)[0] = mkChar("ordered");
-
 
221
	    STRING(tmp)[1] = mkChar("factor");
-
 
222
	}
-
 
223
	else {
-
 
224
	    PROTECT(tmp = allocVector(STRSXP, 1));
-
 
225
	    STRING(tmp)[0] = mkChar("factor");
-
 
226
	}
-
 
227
	setAttrib(a, R_ClassSymbol, tmp);
-
 
228
	UNPROTECT(1);
-
 
229
	setAttrib(a, R_LevelsSymbol, getAttrib(s, R_LevelsSymbol));
-
 
230
    }
201
    UNPROTECT(1);
231
    UNPROTECT(1);
202
    return a;
232
    return a;
203
}
233
}
204
 
234
 
205
SEXP do_rep(SEXP call, SEXP op, SEXP args, SEXP rho)
235
SEXP do_rep(SEXP call, SEXP op, SEXP args, SEXP rho)