diff --git a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/infix/AccessField.java b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/infix/AccessField.java
index e41593722b78fb9fbe863d0bbae378ca83e80edf..56d7bb579b090487486b9be09ffcc9f49963bad2 100644
--- a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/infix/AccessField.java
+++ b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/infix/AccessField.java
@@ -32,6 +32,7 @@ import com.oracle.truffle.api.dsl.Fallback;
 import com.oracle.truffle.api.dsl.NodeChild;
 import com.oracle.truffle.api.dsl.Specialization;
 import com.oracle.truffle.api.dsl.TypeSystemReference;
+import com.oracle.truffle.api.frame.FrameDescriptor;
 import com.oracle.truffle.api.frame.VirtualFrame;
 import com.oracle.truffle.api.profiles.BranchProfile;
 import com.oracle.truffle.api.profiles.ConditionProfile;
@@ -46,12 +47,21 @@ import com.oracle.truffle.r.runtime.RError.Message;
 import com.oracle.truffle.r.runtime.RType;
 import com.oracle.truffle.r.runtime.builtins.RBuiltin;
 import com.oracle.truffle.r.runtime.builtins.RSpecialFactory;
+import com.oracle.truffle.r.runtime.context.RContext;
 import com.oracle.truffle.r.runtime.data.RList;
 import com.oracle.truffle.r.runtime.data.RStringVector;
 import com.oracle.truffle.r.runtime.data.model.RAbstractListVector;
 import com.oracle.truffle.r.runtime.data.model.RAbstractVector;
+import com.oracle.truffle.r.runtime.env.REnvironment;
 import com.oracle.truffle.r.runtime.nodes.RNode;
 
+import qir.ast.QIRLambda;
+import qir.ast.QIRVariable;
+import qir.ast.data.QIRTcons;
+import qir.ast.data.QIRTdestr;
+import qir.ast.data.QIRTnil;
+import qir.ast.operator.QIRProject;
+
 @TypeSystemReference(EmptyTypeSystemFlatLayout.class)
 @NodeChild(value = "arguments", type = RNode[].class)
 abstract class AccessFieldSpecial extends SpecialsUtils.ListFieldSpecialBase {
@@ -108,6 +118,14 @@ public abstract class AccessField extends RBuiltinNode {
         if (!invalidAtomicVector.profile(container instanceof RAbstractListVector) && container instanceof RAbstractVector) {
             error.enter();
             throw RError.error(this, RError.Message.DOLLAR_ATOMIC_VECTORS);
+        } else if (container instanceof REnvironment && ((REnvironment) container).get("queryId") != null) {
+            final Object queryId = ((REnvironment) container).get("queryId");
+            if (queryId != null) {
+                final QIRVariable v = new QIRVariable(null, "t");
+                RContext.queries.set((int) queryId, new QIRProject(getSourceSection(),
+                                new QIRLambda(null, null, v, new QIRTcons(null, field, new QIRTdestr(null, v, field), QIRTnil.instance), new FrameDescriptor()), RContext.queries.get((int) queryId)));
+                return container;
+            }
         }
         return extract.applyAccessField(frame, container, field);
     }