gpt4 book ai didi

r - 面板错误 $intname : $ operator is invalid for atomic vectors

转载 作者:行者123 更新时间:2023-12-04 10:55:54 24 4
gpt4 key购买 nike

我正在研究 r 面板包。现在,如果我有一个使用单选组按钮的功能,并且如果我尝试从 rpanel 菜单中运行该功能,我会收到此错误:

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

但是,如果我按 sé 运行该函数,即不是从 rpanel 菜单内部运行,而是通过独立调用它,则不会出现上述错误。这是一个简单的例子。尝试两种方式 (1) 运行整个代码并单击添加,然后单击菜单中的添加 (2) 单独运行添加函数并使用 add() 调用。前者导致上述错误,而后者则不会。另外,我看到只有当我的面板中有 rp.radiogroup 时才会出现此错误。

我在Why doesn't R allow $ operator on atomic vectors?看到了帖子但我该如何解决我的问题?我的示例代码如下:

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)
}

最佳答案

您可以简单地使用 $: Change 进行转义

panel$vals

到:

panel["vals"]

关于r - 面板错误 $intname : $ operator is invalid for atomic vectors,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12339715/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com