3

r パネル パッケージに取り組んでいます。ラジオグループ ボタンを使用する関数があり、rpanel メニュー内から関数を実行しようとすると、次のエラーが発生します。

Error in panel$intname : $ operator is invalid for atomic vectors

ただし、rpanel メニュー内からではなく、個別に関数を実行すると、上記のエラーは表示されません。簡単な例を次に示します。2 つの方法で試してください (1) コード全体を実行して Addition をクリックし、メニューの [Add] をクリックします (2) add 関数を単独で実行し、add() で呼び出します。前者では上記のエラーが発生し、後者では発生しません。また、このエラーは、パネルに rp.radiogroup がある場合にのみ発生することがわかりました。

なぜ R はアトミック ベクトルの $ 演算子を許可しないのですか?の投稿を見ました。しかし、どうすれば問題を解決できますか? 私のサンプルコードは以下の通りです:

install.packages(c("rpanel","tkrplot"))
my.menu <- function(panel) {

library(rpanel,tkrplot)

if (panel$menu=="Add"){
add()
  }
else 
panel
}


main.panel <- rp.control(title = "Main Menu",size=c(200,150))
rp.menu(panel = main.panel, var = menu,
    labels = list(list("Addition", "Add")),action = my.menu)


#  function to do adddition

add <- function(){

my.draw <- function(panel) {
 if(panel$vals=="numbers"){
  val<-as.numeric(panel$nmbr1)+as.numeric(panel$nmbr2)
 }
else if(panel$vals=="strings"){
  val <- paste(as.character(panel$nmbr1), "and" ,as.character(panel$nmbr2))
}
plot(1:10, 1:10, type="n", xlab="", ylab="",
axes=FALSE, frame = TRUE)
text(5, 5, paste("Result: ", val),cex=1.4)
panel
}



my.redraw <- function(panel) {
rp.tkrreplot(panel, my.tkrplot)
 panel
}

my.panel <- rp.control(title = "Addition")
rp.textentry(panel = my.panel, var = nmbr1,
 labels = "First:     ", action = my.redraw, initval="100")
rp.textentry(panel = my.panel, var = nmbr2,
           labels = "Second:", action = my.redraw, initval="200")
rp.radiogroup(panel = my.panel, var = vals,
            values = c("numbers", "strings"),
            action = my.redraw, title = "Type")
rp.tkrplot(panel = my.panel, name = my.tkrplot, plotfun = my.draw)
}
4

1 に答える 1

1

$: Change を使用して単純にエスケープできます。

パネル$値

に:

パネル["値"]

于 2012-09-09T14:10:29.363 に答える