diff --git a/com.oracle.truffle.r.ffi.impl/src/com/oracle/truffle/r/ffi/impl/upcalls/FFIWrapNode.java b/com.oracle.truffle.r.ffi.impl/src/com/oracle/truffle/r/ffi/impl/upcalls/FFIWrapNode.java
index 6c7e397ee82032a85b9aacb020447351289f4de8..2693615f508a0d1ff9bdfd3af494c667e2385d05 100644
--- a/com.oracle.truffle.r.ffi.impl/src/com/oracle/truffle/r/ffi/impl/upcalls/FFIWrapNode.java
+++ b/com.oracle.truffle.r.ffi.impl/src/com/oracle/truffle/r/ffi/impl/upcalls/FFIWrapNode.java
@@ -36,6 +36,7 @@ import com.oracle.truffle.r.runtime.data.RLogical;
 import com.oracle.truffle.r.runtime.data.RObject;
 import com.oracle.truffle.r.runtime.data.RRaw;
 import com.oracle.truffle.r.runtime.data.RScalarList;
+import com.oracle.truffle.r.runtime.data.RScalarVector;
 import com.oracle.truffle.r.runtime.data.RSequence;
 
 public abstract class FFIWrapNode extends Node {
@@ -92,7 +93,11 @@ public abstract class FFIWrapNode extends Node {
         return wrap(RDataFactory.createComplexVectorFromScalar(value));
     }
 
-    @Specialization
+    protected static boolean isRScalarVector(RObject value) {
+        return value instanceof RScalarVector;
+    }
+
+    @Specialization(guards = "!isRScalarVector(value)")
     protected static Object wrap(RObject value) {
         return value;
     }
diff --git a/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/data/RTypes.java b/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/data/RTypes.java
index f11da3d123650f52a9ed9c974c93284153ae10de..582b9366c70bc6a0cdd69ba8e82cba861b652241 100644
--- a/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/data/RTypes.java
+++ b/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/data/RTypes.java
@@ -109,21 +109,11 @@ public class RTypes {
         return RDataFactory.createDoubleVectorFromScalar(value);
     }
 
-    @ImplicitCast
-    public static RAbstractContainer toAbstractContainer(RRaw value) {
-        return RDataFactory.createRawVectorFromScalar(value);
-    }
-
     @ImplicitCast
     public static RAbstractContainer toAbstractContainer(byte value) {
         return RDataFactory.createLogicalVectorFromScalar(value);
     }
 
-    @ImplicitCast
-    public static RAbstractContainer toAbstractContainer(RComplex value) {
-        return RDataFactory.createComplexVectorFromScalar(value);
-    }
-
     @ImplicitCast
     public static RAbstractContainer toAbstractContainer(String value) {
         return RDataFactory.createStringVectorFromScalar(value);
@@ -139,21 +129,11 @@ public class RTypes {
         return RDataFactory.createDoubleVectorFromScalar(value);
     }
 
-    @ImplicitCast
-    public static RAbstractVector toAbstractVector(RRaw value) {
-        return RDataFactory.createRawVectorFromScalar(value);
-    }
-
     @ImplicitCast
     public static RAbstractVector toAbstractVector(byte value) {
         return RDataFactory.createLogicalVectorFromScalar(value);
     }
 
-    @ImplicitCast
-    public static RAbstractVector toAbstractVector(RComplex value) {
-        return RDataFactory.createComplexVectorFromScalar(value);
-    }
-
     @ImplicitCast
     public static RAbstractVector toAbstractVector(String value) {
         return RDataFactory.createStringVectorFromScalar(value);
@@ -169,21 +149,11 @@ public class RTypes {
         return RDataFactory.createDoubleVectorFromScalar(value);
     }
 
-    @ImplicitCast
-    public static RAbstractComplexVector toAbstractComplexVector(RComplex vector) {
-        return RDataFactory.createComplexVectorFromScalar(vector);
-    }
-
     @ImplicitCast
     public static RAbstractLogicalVector toAbstractLogicalVector(byte vector) {
         return RDataFactory.createLogicalVectorFromScalar(vector);
     }
 
-    @ImplicitCast
-    public static RAbstractRawVector toAbstractRawVector(RRaw vector) {
-        return RDataFactory.createRawVectorFromScalar(vector);
-    }
-
     @ImplicitCast
     public static RAbstractStringVector toAbstractStringVector(String vector) {
         return RDataFactory.createStringVectorFromScalar(vector);
@@ -199,21 +169,11 @@ public class RTypes {
         return RDataFactory.createDoubleVectorFromScalar(value);
     }
 
-    @ImplicitCast
-    public static RAbstractAtomicVector toAbstractAtomicVector(RRaw value) {
-        return RDataFactory.createRawVectorFromScalar(value);
-    }
-
     @ImplicitCast
     public static RAbstractAtomicVector toAbstractAtomicVector(byte value) {
         return RDataFactory.createLogicalVectorFromScalar(value);
     }
 
-    @ImplicitCast
-    public static RAbstractAtomicVector toAbstractAtomicVector(RComplex value) {
-        return RDataFactory.createComplexVectorFromScalar(value);
-    }
-
     @ImplicitCast
     public static RAbstractAtomicVector toAbstractAtomicVector(String value) {
         return RDataFactory.createStringVectorFromScalar(value);