Dear R's friends, I have a C code with a lot of SEXP objects and I want to return them as a list. Does any function I can use in SET_VECTOR_ELT() as mkChar() in SET_STRING_ELT()? For example, this is my code, SEXP my_code(){ int i; SEXP a1, a2, a3, res, res_names; char *names[3] = {"a1", "a2", "a3"}; PROTECT(a1 = allocVector(REALSXP, 3)); PROTECT(a2 = allocVector(REALSXP, 4)); PROTECT(a3 = allocVector(REALSXP, 5)); PROTECT(res = allocVector(LISTSXP, 3)); PROTECT(res_names = allocVector(STRSXP, 3)); for(i = 0; i < 3; i++){ SET_STRING_ELT(res_names, i, mkChar(names[i])); /* What should I do at here? May I use eval()? SET_VECTOR_ELT(res, i, ????); */ } setAttrib(res, R_NamesSymbol, ret_names); UNPROTECT(5); return(res); } I need a function to replace these things, SET_VECTOR_ELT(res, 0, a1); SET_VECTOR_ELT(res, 0, a2); SET_VECTOR_ELT(res, 0, a3); ... Does it possible? Thanks. Sincerely, Wei-Chen Chen =========Don't ever let somebody tell you, "you can't do something." Not even me. You got a dream. You gotta protect it. People can't do something themselves. They wanna tell you, "you can't do it." If you want something, go get it, period! -- Chris Gardner (Will Smith in The Pursuit of Happyness)