RStudio 闪亮错误 - 要替换的项目数不是替换长度的倍数
RStudio Shiny Error - number of items to replace is not a multiple of replacement length
我是 R 的新手,目前正在开发一个使用 RStuido 识别手写数字的闪亮网络应用程序。
我使用的数据来自 Kaggle 比赛:
Digit-Recogniser
我有以下函数来呈现数字的平均表示
# Produce a plot containing the average representations of digits
output$digitAvgRep <- renderImage({
## For visualising traing data
dataFrame<-as.matrix(data())
##Color ramp def.
colors<-c('white','red')
cus_col<-colorRampPalette(colors=colors)
## Plot the average image of each digit
par(mfrow=c(4,3),pty='s',mar=c(1,1,1,1),xaxt='n',yaxt='n')
all_img<-array(dim=c(10,28*28))
for(di in 0:9)
{
print(di)
all_img[di+1,]<-apply(dataFrame[dataFrame[,1]==di,-1],2,sum)
all_img[di+1,]<-all_img[di+1,]/max(all_img[di+1,])*255
z<-array(all_img[di+1,],dim=c(28,28))
z<-z[,28:1] ##right side up1
image(1:28,1:28,z,main=di,col=cus_col(256))
}
})
然后我将上述变量传递给 ui.R 使用:
# User renderUI to dynamically create objects in the ui.R
output$tb <- renderUI({
if(is.null(data()))
h5("No data loaded.")
else
tabsetPanel(
tabPanel("About file", tableOutput("filedf")),
tabPanel("RawData", tableOutput("table")),
tabPanel("Summary", tableOutput("sum")),
tabPanel("Digit Distribution",plotOutput("digitDist")),
tabPanel("Average Digit Representation", imageOutput("digitAvgRep")))
})
我在 运行 应用程序时得到以下输出:
[1] 0
Error in all_img[di + 1, ] <- apply(dataFrame[dataFrame[, 1] == di, -1], :
number of items to replace is not a multiple of replacement length
有人知道如何解决这个问题吗?
谢谢
正如错误提示的那样,您正在尝试插入一个长度比您放置的列短的新向量,并且项目数不是替换长度的倍数
使用以下示例:
## create a matrix that is 6 rows and 2 columns
mat <- matrix(1:12, 6,2)
## try to replace first column with a vector of length 3
## works fine because 6 is a multiple of 3
mat[,1] <- 1:3
## try to replace first column with a vector of length 5
## Fails because 6 is not a multiple of 5, try the same exception.
mat[,1] <- 1:5
## number of items to replace is not a multiple of replacement length
因此,您可能需要重新考虑您的申请声明。我会考虑创建列表来存储结果,而不是尝试将其存储在矩阵中。
我是 R 的新手,目前正在开发一个使用 RStuido 识别手写数字的闪亮网络应用程序。
我使用的数据来自 Kaggle 比赛: Digit-Recogniser
我有以下函数来呈现数字的平均表示
# Produce a plot containing the average representations of digits
output$digitAvgRep <- renderImage({
## For visualising traing data
dataFrame<-as.matrix(data())
##Color ramp def.
colors<-c('white','red')
cus_col<-colorRampPalette(colors=colors)
## Plot the average image of each digit
par(mfrow=c(4,3),pty='s',mar=c(1,1,1,1),xaxt='n',yaxt='n')
all_img<-array(dim=c(10,28*28))
for(di in 0:9)
{
print(di)
all_img[di+1,]<-apply(dataFrame[dataFrame[,1]==di,-1],2,sum)
all_img[di+1,]<-all_img[di+1,]/max(all_img[di+1,])*255
z<-array(all_img[di+1,],dim=c(28,28))
z<-z[,28:1] ##right side up1
image(1:28,1:28,z,main=di,col=cus_col(256))
}
})
然后我将上述变量传递给 ui.R 使用:
# User renderUI to dynamically create objects in the ui.R
output$tb <- renderUI({
if(is.null(data()))
h5("No data loaded.")
else
tabsetPanel(
tabPanel("About file", tableOutput("filedf")),
tabPanel("RawData", tableOutput("table")),
tabPanel("Summary", tableOutput("sum")),
tabPanel("Digit Distribution",plotOutput("digitDist")),
tabPanel("Average Digit Representation", imageOutput("digitAvgRep")))
})
我在 运行 应用程序时得到以下输出:
[1] 0
Error in all_img[di + 1, ] <- apply(dataFrame[dataFrame[, 1] == di, -1], :
number of items to replace is not a multiple of replacement length
有人知道如何解决这个问题吗?
谢谢
正如错误提示的那样,您正在尝试插入一个长度比您放置的列短的新向量,并且项目数不是替换长度的倍数
使用以下示例:
## create a matrix that is 6 rows and 2 columns
mat <- matrix(1:12, 6,2)
## try to replace first column with a vector of length 3
## works fine because 6 is a multiple of 3
mat[,1] <- 1:3
## try to replace first column with a vector of length 5
## Fails because 6 is not a multiple of 5, try the same exception.
mat[,1] <- 1:5
## number of items to replace is not a multiple of replacement length
因此,您可能需要重新考虑您的申请声明。我会考虑创建列表来存储结果,而不是尝试将其存储在矩阵中。