diff --git a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/access/vector/CachedExtractVectorNode.java b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/access/vector/CachedExtractVectorNode.java
index 5101c995fa751b7eb0760ee3dc529584a018253e..7e61a7cf34875dbfbe11c32cc58c56881beaf796 100644
--- a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/access/vector/CachedExtractVectorNode.java
+++ b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/access/vector/CachedExtractVectorNode.java
@@ -289,7 +289,9 @@ final class CachedExtractVectorNode extends CachedVectorNode {
                         if (boxNewDimName == null) {
                             boxNewDimName = insert(BoxPrimitiveNode.create());
                         }
-                        result = boxNewDimName.execute(extract(i, (RAbstractStringVector) boxOldDimNames.execute(dataAt), positions[i], positionProfile[i]));
+                        RAbstractStringVector originalDimName = (RAbstractStringVector) boxOldDimNames.execute(dataAt);
+                        RAbstractStringVector newDimName = (RAbstractStringVector) boxNewDimName.execute(extract(i, originalDimName, positions[i], positionProfile[i]));
+                        result = newDimName.materialize();
                     }
                     newDimNames[dimIndex] = result;
                     if (newDimNamesNames != null) {