I ran into a similar issue, and wrote a stand-alone function to get around the weird interactions between yasnippet and polymode.
The following function mimics the behaviour of the snippet you tried, prompting first for the header info, which gets inserted at your $1, and then dropping you in the chunck body (your $0):
(defun tws-insert-r-chunk (header)
After some trials on Windows machine, I found this workflow works very well:
Installation for Windows users
Put this in your init.el or .emacs.el file - after ESS code:
(add-to-list 'auto-mode-alist '("\\.Rnw" . poly-noweb+r-mode))
; (add-to-list 'auto-mode-alist '("\\.md" . poly-markdown-mode)...
You need to add poly-noweb+r-mode to auto-mode-alist for Rnw files. You also need to watch for conflicts with ESS. ESS adds its own mode to auto-mode-alist for Rnw files, so you have to wait until after this happens to make sure you over-ride the ESS settings. This is what I have in my .emacs:
(eval-after-load 'ess-site ...
The reason I was having this problem is that I didn't have (require 'poly-R) in my init file. I only had (require 'poly-markdown). After adding (require 'poly-R), I can now press Enter within a chunk and it will stay in ess-r-mode.
If you have an active R process in your Emacs session, then the knitr-ESS weaver will use that process, as you've noted. That means any objects you create in your R chunks in your Rnw or Rmd document are available for interactive inspection (or even modification, although you most likely wouldn't want to do that) in the R buffer.