R中的非数值矩阵范围误差是什么?

用户名

我试图将函数应用到我的列表中,但返回此错误

“非数值矩阵范围错误”

这是我的代码

错误发生在最后几行中,代码可以正常工作到最后,因此,我无法绘制我在网上搜索过的图表,但找不到任何有帮助的东西,而且我看不到代码出了什么问题



#Question 1
set.seed(10000)

v <- c(0.1,0.5,1,2,5,10,100)

lyst <- list()

for(i in v)
{
  for(j in v)
  {
    elementname <- paste0(as.character(i),"-",as.character(j))
    print(elementname)
    lyst[[elementname]] <- rgamma(10000,i,j)
  }
}
#Question 2
pdf("Question2.pdf",width = 20, height = 10)
par(mfcol=c(7,7))
for(x in names(lyst))
{
  hist(lyst[[x]],
       xlab = "Value",
       main = paste("Alpha-Lambda:",x))
}
dev.off()

#Question 3
theoretical_mean <- matrix(ncol=7,nrow=7,dimnames=list(as.character(v), as.character(v)))
theoretical_var <- matrix(ncol=7,nrow=7,dimnames=list(as.character(v), as.character(v)))
for (i in 1:7)
{
  for (j in 1:7)
  {
    theoretical_mean[j,i] <- as.character(v[i]/v[j])
    theoretical_var[j,i] <- as.character(v[i]/(v[j]^2))
  }
}

sample_mean <-lapply(lyst, mean)
sample_mean <- as.data.frame(matrix(unlist(sample_mean),nrow = 7, ncol = 7, byrow = T))
sample_mean <- round(sample_mean,digits = 3)
sample_mean <- data.matrix(sample_mean, rownames.force = NA)

sample_var <-lapply(lyst, var)

sample_var <- as.data.frame(matrix(unlist(sample_var),nrow = 7, ncol = 7, byrow = T))
sample_var <- round(sample_var,digits = 3)
sample_var <- data.matrix(sample_var, rownames.force = NA)

theor_sample_mean <- matrix(paste(theoretical_mean, sample_mean, sep=" - "),nrow=7,dimnames = dimnames(theoretical_var))
theor_sample_var <- matrix(paste(theoretical_var, sample_var, sep=" - "),nrow=7,dimnames= dimnames(theoretical_var))

sink("Q3.txt")
cat("Theoretical Mean vs. Sample Mean:\n")
print(as.table(theor_sample_mean))
cat("\n")
cat("Theoretical Variance vs. Sample Variance:\n")
print(as.table(theor_sample_var))
sink()

#Question 4
nmean <- function(x)
{
  m <- matrix(nrow=nrow(x))
  for (j in 1:ncol(x))
  {
    v <- c()
    for(i in 1:nrow(x))
    {
      v <- c(v,mean(x[1:i,j]))
    }
    m <- cbind(m,v)
  }
  m <- m[,-1]
  colnames(m) <- colnames(x)
  rownames(m) <- NULL
  return(m)
}
sequentialMeans <- lapply(lyst,nmean)

pdf("Question4.pdf",width=15,height=10)
for (i in 1:7)
{
  for (j in 1:7)
  {
    plot(y=sequentialMeans[[i]][,j],x=1:10000,xlab="n value",ylab="Values", main=paste("Alpha-Lambda:",colnames(lyst[[i]])[j]),type="l")
  }
}
dev.off()


陶菲

您的代码的问题是,nmean根据行功能输入的数据格式

nmean <- function(x)
{
  m <- matrix(nrow=nrow(x))
  for (j in 1:ncol(x))
  {
    v <- c()
    for(i in 1:nrow(x))
    {
      v <- c(v,mean(x[1:i,j]))
    }
    m <- cbind(m,v)
  }
  m <- m[,-1]
  colnames(m) <- colnames(x)
  rownames(m) <- NULL
  return(m)
}

是一个矩阵,您需要将其分配给伽玛分布值的向量,如以下几行所述

lyst <- list()

for(i in v)
{
  for(j in v)
  {
    elementname <- paste0(as.character(i),"-",as.character(j))
    print(elementname)
    lyst[[elementname]] <- rgamma(10000,i,j)
  }
}

对于x类型为vector的函数ncol(x)nrow(x)返回NULL此外,也没有ncol(x)可能的应用

如果您想保存方法,则需要考虑将数据转换为矩阵格式,或者使用向量格式,但对向量length(x)的长度和names(lyst)名称使用向量兼容函数


更新:

注释中的代码有效,但是您必须更改lapply-statement,因为现在有了一个可以nmean直接用作函数输入的矩阵以下代码可用于生成sampleMeans并避免您的问题的原始错误消息。为了减少运行时间,它只需要100个样本。

#Question 1
set.seed(10000)

v <- c(0.1,0.5,1,2,5,10,100)

lyst <- list()

for(i in v)
{
  for(j in v)
  {
    elementname <- paste0(as.character(i),"-",as.character(j))
    print(elementname)
    lyst[[elementname]] <- rgamma(100,i,j)
  }
}
#Question 2
pdf("Question2.pdf",width = 20, height = 10)
par(mfcol=c(7,7))
for(x in names(lyst))
{
  hist(lyst[[x]],
       xlab = "Value",
       main = paste("Alpha-Lambda:",x))
}
dev.off()

#Question 3
theoretical_mean <- matrix(ncol=7,nrow=7,dimnames=list(as.character(v), as.character(v)))
theoretical_var <- matrix(ncol=7,nrow=7,dimnames=list(as.character(v), as.character(v)))
for (i in 1:7)
{
  for (j in 1:7)
  {
    theoretical_mean[j,i] <- as.character(v[i]/v[j])
    theoretical_var[j,i] <- as.character(v[i]/(v[j]^2))
  }
}

sample_mean <-lapply(lyst, mean)
sample_mean <- as.data.frame(matrix(unlist(sample_mean),nrow = 7, ncol = 7, byrow = T))
sample_mean <- round(sample_mean,digits = 3)
sample_mean <- data.matrix(sample_mean, rownames.force = NA)

sample_var <-lapply(lyst, var)

sample_var <- as.data.frame(matrix(unlist(sample_var),nrow = 7, ncol = 7, byrow = T))
sample_var <- round(sample_var,digits = 3)
sample_var <- data.matrix(sample_var, rownames.force = NA)

theor_sample_mean <- matrix(paste(theoretical_mean, sample_mean, sep=" - "),nrow=7,dimnames = dimnames(theoretical_var))
theor_sample_var <- matrix(paste(theoretical_var, sample_var, sep=" - "),nrow=7,dimnames= dimnames(theoretical_var))

sink("Q3.txt")
cat("Theoretical Mean vs. Sample Mean:\n")
print(as.table(theor_sample_mean))
cat("\n")
cat("Theoretical Variance vs. Sample Variance:\n")
print(as.table(theor_sample_var))
sink()

lyst = matrix(unlist(lyst), ncol = 7, byrow = TRUE) 
colnames(lyst) = c("100-0.1","100-0.5","100-1","100-2","100-5","100-10","100-100")
#Question 4
nmean <- function(x)
{
  m <- matrix(nrow=nrow(x))
  for (j in 1:ncol(x))
  {
    v <- c()
    for(i in 1:nrow(x))
    {
      v <- c(v,mean(x[1:i,j]))
    }
    m <- cbind(m,v)
  }
  m <- m[,-1]
  colnames(m) <- colnames(x)
  rownames(m) <- NULL
  return(m)
}
sequentialMeans <- nmean(lyst)

还请注意,您需要调整Q4的代码,即图的生成。以下代码有效。

pdf("Question4.pdf",width=15,height=10)
    for (i in 1:7)
    {
      for (j in 1:7)
      {
        plot(y=sequentialMeans[,j],x=1:700,xlab="n value",ylab="Values", main=paste("Alpha-Lambda:",colnames(lyst[,j]),type="l"))
      }
    }
    dev.off()

让我知道是否有帮助。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何解决R中的“非数值矩阵范围”错误?

来自分类Dev

遇到 R 闪亮错误:非数值矩阵范围

来自分类Dev

R中的矩阵乘法误差

来自分类Dev

矩阵逆中的误差

来自分类Dev

将矩阵与R中的向量等价是什么意思

来自分类Dev

在R中构造此稀疏矩阵的最快方法是什么

来自分类Dev

数值微分中的“ h”是什么?

来自分类Dev

sklearn中的NMF(非负矩阵分解)中的n_components是什么?

来自分类Dev

imshow()中的范围是什么?

来自分类Dev

用 Matlab 中的元素替换矩阵的所有非空元素的最佳方法是什么?

来自分类Dev

R中的非字符库调用内是什么类?

来自分类Dev

在Excel中以非连续范围创建“值”数组的最佳方法是什么?

来自分类Dev

RawPy对象中的颜色矩阵是什么?

来自分类Dev

Keras vs Numpy中的数值误差

来自分类Dev

在R中粘贴特定范围的矩阵列

来自分类Dev

R中的性能:在矩阵中对行的元素进行排序的最快方法是什么?

来自分类Dev

基于R中的数值矩阵进行合并(字符串)

来自分类Dev

在R中的一对矩阵之间执行逐行点积的好方法是什么?

来自分类Dev

在R中的矩阵中找到所有“周期/ cliques”的最佳方法是什么?

来自分类Dev

从R中的索引集中获取矩阵元素的有效方法是什么?

来自分类Dev

RavenDB中WaitForNonStaleResultsAsOfNow的范围是什么

来自分类Dev

rgb中的肤色范围是什么?

来自分类Dev

python中参数变量的范围是什么?

来自分类Dev

PHP中GLOBAL的作用范围是什么?

来自分类Dev

rgb中的肤色范围是什么?

来自分类Dev

AngularJS中ngModel指令的范围是什么?

来自分类Dev

Winsock中SOCKET对象的范围是什么?

来自分类Dev

这在java中是什么范围?

来自分类Dev

r 中的回归误差

Related 相关文章

  1. 1

    如何解决R中的“非数值矩阵范围”错误?

  2. 2

    遇到 R 闪亮错误:非数值矩阵范围

  3. 3

    R中的矩阵乘法误差

  4. 4

    矩阵逆中的误差

  5. 5

    将矩阵与R中的向量等价是什么意思

  6. 6

    在R中构造此稀疏矩阵的最快方法是什么

  7. 7

    数值微分中的“ h”是什么?

  8. 8

    sklearn中的NMF(非负矩阵分解)中的n_components是什么?

  9. 9

    imshow()中的范围是什么?

  10. 10

    用 Matlab 中的元素替换矩阵的所有非空元素的最佳方法是什么?

  11. 11

    R中的非字符库调用内是什么类?

  12. 12

    在Excel中以非连续范围创建“值”数组的最佳方法是什么?

  13. 13

    RawPy对象中的颜色矩阵是什么?

  14. 14

    Keras vs Numpy中的数值误差

  15. 15

    在R中粘贴特定范围的矩阵列

  16. 16

    R中的性能:在矩阵中对行的元素进行排序的最快方法是什么?

  17. 17

    基于R中的数值矩阵进行合并(字符串)

  18. 18

    在R中的一对矩阵之间执行逐行点积的好方法是什么?

  19. 19

    在R中的矩阵中找到所有“周期/ cliques”的最佳方法是什么?

  20. 20

    从R中的索引集中获取矩阵元素的有效方法是什么?

  21. 21

    RavenDB中WaitForNonStaleResultsAsOfNow的范围是什么

  22. 22

    rgb中的肤色范围是什么?

  23. 23

    python中参数变量的范围是什么?

  24. 24

    PHP中GLOBAL的作用范围是什么?

  25. 25

    rgb中的肤色范围是什么?

  26. 26

    AngularJS中ngModel指令的范围是什么?

  27. 27

    Winsock中SOCKET对象的范围是什么?

  28. 28

    这在java中是什么范围?

  29. 29

    r 中的回归误差

热门标签

归档