错误:结果不是以下位置的数据框:

2023-12-11

我正在尝试在相当大的数据框上运行拟合函数,该数据框由名为的变量分组"big_group" and 'small_group'。 特别是,我试图获得每个的预测和 coefs 值small_group代替big_group.

也就是说,我试图将这些新列添加到我的新 data.frame 末尾do({功能。

由于缺少数据点或“初始参数估计时的奇异梯度矩阵”错误,某些数据组无法拟合。

所以,我用了tryCatch这篇文章的方法如何忽略错误并继续处理列表项我使用了@Koshke的以下答案

R:捕获“nls”中的错误

OTH,解决这个问题后我遇到了一个error正在说

错误:结果不是位置:3 处的数据框

有一些讨论关于这个错误,但我不知道如何实现我的问题。

这是我的可重现的例子; (这个例子与我的真实数据相似,这就是我构建这样的例子的原因)

library(minpack.lm)
library(dplyr)


set.seed(100)

data.list <- lapply(1:2, function(big_group) {
  xx <- c(sort(runif(5,1,5)),sort(runif(5,-8,-2)), rep(5,2))  ##I intentionall added the last two 5 to get unfitted groups

  yy<- sort(runif(12,0,10))

  small_group <- rep(c('a','b','c'),times=c(5,5,2)) ##small groups in under the big_group

  df <- data.frame(xx,yy,small_group,big_group)

  df <- df%>%
    group_by(big_group,small_group)%>%

  do({
  #fitting part
    fit <- tryCatch(nlsLM(yy~k*xx/2+U, start=c(k=1,U=5), data = ., trace=T, 
                          control = nls.lm.control(maxiter=100)),error=function(e) NULL)

      if(!("NULL" %in% class(fit))){

    new.range<- data.frame(xx=seq(1,10,length.out=nrow(.)))
    predicted <- predict(fit, newdata =new.range)
    coefs <- data.frame(k=coef(fit)[1],U=coef(fit)[2])

    data.frame(., new.range,predicted,coefs,row.names=NULL) ##This is the part the error came from I guess!

}})
})

这就是数据的样子; @RomanLuštrik

data.list <- lapply(1:2, function(big_group) {
  xx <- c(sort(runif(5,1,5)),sort(runif(5,-8,-2)), rep(5,2))  ##I intentionall added the last two 5 to get unfitted groups
  yy<- sort(runif(12,0,10))
  small_group <- rep(c('a','b','c'),times=c(5,5,2)) ##small groups in under the big_group
  df <- data.frame(xx,yy,small_group,big_group)
})


df <- bind_rows(data.list)
 > df
          xx       yy small_group big_group
1   1.685681 1.302889           a         1
2   2.680406 1.804072           a         1
3   3.153395 3.306605           a         1
4   3.995889 3.486920           a         1
5   4.081206 6.293909           a         1
6  -6.333657 6.952741           b         1
7  -5.070164 7.775844           b         1
8  -4.705420 8.273034           b         1
9  -2.708278 8.651205           b         1
10 -2.428970 8.894535           b         1
11  5.000000 9.541577           c         1
12  5.000000 9.895641           c         1
13  1.830856 1.234872           a         2
14  2.964927 2.114086           a         2
15  3.413297 2.299059           a         2
16  4.121434 2.533907           a         2
17  4.536908 3.577738           a         2
18 -6.807926 4.451480           b         2
19 -6.585834 4.637012           b         2
20 -6.350680 5.913211           b         2
21 -6.157485 5.975753           b         2
22 -6.016821 6.471012           b         2
23  5.000000 6.763982           c         2
24  5.000000 9.605731           c         2

这个怎么样?问题似乎在于迫使传统的 R 代码与%>%管道,所以我只是解决它。

# Libraries and Options ---------------------------------------------------
library(minpack.lm)
library(dplyr)
set.seed(100)

# Create the data ---------------------------------------------------------
data.list <- lapply(1:2, function(big_group) {
  xx <- c(sort(runif(5,1,5)),sort(runif(5,-8,-2)), rep(5,2))  ##I intentionall added the last two 5 to get unfitted groups

  yy<- sort(runif(12,0,10))

  small_group <- rep(c('a','b','c'),times=c(5,5,2)) ##small groups in under the big_group

  df <- data.frame(xx,yy,small_group,big_group)
})

df <- bind_rows(data.list)



# Fit the Model -----------------------------------------------------------
print("My understanding here is that you want a separate model fit for each combination of big group and small group")

# Create fit-level groups
df$big_small <- paste0(df$big_group, df$small_group)

# Create results object
df1 <- structure(list(xx = numeric(0), yy = numeric(0), small_group = structure(integer(0), .Label = c("a", 
                      "b", "c"), class = "factor"), big_group = integer(0), big_small = character(0), 
                      xx.1 = numeric(0), predicted = numeric(0), k = numeric(0), 
                      U = numeric(0)), .Names = c("xx", "yy", "small_group", "big_group", 
                                                  "big_small", "xx.1", "predicted", "k", "U"), row.names = integer(0), class = "data.frame")

# Fit model, get results
for(b_s in unique(df$big_small)){
  fit <- tryCatch(nlsLM(yy~k*xx/2+U, start=c(k=1,U=5), data = df[df$big_small==b_s,], trace=T, 
                        control = nls.lm.control(maxiter=100)),error=function(e) NULL)

  if(!("NULL" %in% class(fit))){

    new.range<- data.frame(xx=seq(1,10,length.out=nrow(df[df$big_small==b_s,])))
    predicted <- predict(fit, newdata =new.range)
    coefs <- data.frame(k=coef(fit)[1],U=coef(fit)[2])

    df1 <- rbind(df1, data.frame(df[df$big_small==b_s,], new.range,predicted,coefs,row.names=NULL))
  }   
}
It.    0, RSS =    44.4318, Par. =          1          5
It.    1, RSS =   0.259895, Par. =    1.89421    1.00916
It.    2, RSS =   0.259895, Par. =    1.89421    1.00916
It.    0, RSS =    81.5517, Par. =          1          5
It.    1, RSS =   0.256959, Par. =   0.912615    8.80728
It.    2, RSS =   0.256959, Par. =   0.912615    8.80728
It.    0, RSS =    1.76253, Par. =          1          5
It.    1, RSS =   0.715381, Par. =   -156.969    400.646
It.    2, RSS =   0.715381, Par. =   -156.969    400.646
It.    0, RSS =     64.766, Par. =          1          5
It.    1, RSS =    4.27941, Par. =    3.32947   -1.95395
It.    2, RSS =    4.27941, Par. =    3.32947   -1.95395
It.    0, RSS =     137.22, Par. =          1          5
It.    1, RSS =   0.209219, Par. =   0.893139    10.0071
It.    2, RSS =   0.209219, Par. =   0.893139    10.0071
It.    0, RSS =    9.90713, Par. =          1          5
It.    1, RSS =  0.0626808, Par. =    -156.67    401.394
It.    2, RSS =  0.0626808, Par. =    -156.67    401.394
df1
          xx       yy small_group big_group big_small  xx.1  predicted         k         U
1   1.225533 2.046122           a         1        1a  1.00  1.9562669 1.8942075  1.009163
2   2.030690 2.803538           a         1        1a  3.25  4.0872502 1.8942075  1.009163
3   2.231064 3.575249           a         1        1a  5.50  6.2182336 1.8942075  1.009163
4   2.874197 3.594751           a         1        1a  7.75  8.3492170 1.8942075  1.009163
5   3.209290 3.984879           a         1        1a 10.00 10.4802004 1.8942075  1.009163
6  -6.978428 5.358112           b         1        1b  1.00  9.2635844 0.9126145  8.807277
7  -5.778077 6.249965           b         1        1b  3.25 10.2902757 0.9126145  8.807277
8  -5.097376 6.690217           b         1        1b  5.50 11.3169671 0.9126145  8.807277
9  -4.720648 6.902905           b         1        1b  7.75 12.3436585 0.9126145  8.807277
10 -3.125584 7.108038           b         1        1b 10.00 13.3703498 0.9126145  8.807277
11  1.685681 1.302889           a         2        2a  1.00 -0.2892182 3.3294688 -1.953953
12  2.680406 1.804072           a         2        2a  3.25  3.4564342 3.3294688 -1.953953
13  3.153395 3.306605           a         2        2a  5.50  7.2020866 3.3294688 -1.953953
14  3.995889 3.486920           a         2        2a  7.75 10.9477390 3.3294688 -1.953953
15  4.081206 6.293909           a         2        2a 10.00 14.6933913 3.3294688 -1.953953
16 -6.333657 6.952741           b         2        2b  1.00 10.4536476 0.8931386 10.007078
17 -5.070164 7.775844           b         2        2b  3.25 11.4584286 0.8931386 10.007078
18 -4.705420 8.273034           b         2        2b  5.50 12.4632095 0.8931386 10.007078
19 -2.708278 8.651205           b         2        2b  7.75 13.4679905 0.8931386 10.007078
20 -2.428970 8.894535           b         2        2b 10.00 14.4727715 0.8931386 10.007078
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

错误:结果不是以下位置的数据框: 的相关文章

  • 在多面图中用 N 注释 x 轴

    我正在尝试生成一些按治疗条件和访问次数细分的数字结果的箱线图 每个框中的观察次数都放在图下方 并且也标记了访问次数 这里有一些虚假数据可以用来说明 我举了两个我尝试过但不太有效的例子 library ggplot2 library plyr
  • 使 matplotlib 图形默认看起来像 R?

    Is there a way to make matplotlib behave identically to R or almost like R in terms of plotting defaults For example R t
  • 根据列A:列B范围内的值查找数据框中的相应行[重复]

    这个问题在这里已经有答案了 我有一个 data frame 和一个向量 例如 df data frame id 1 3 start c 1 1000 16000 end c 100 1100 16100 info c a b c vec c
  • R 中的 Mapdeck 包 - add_grid 似乎未渲染任何内容

    Problem The add gridR 中的函数mapdeck包很精彩 然而 遵循CRAN 文档 https cran r project org web packages mapdeck mapdeck pdf 我似乎无法获得任何数据
  • 如何使用 tidyr 将向量中字符串中的每个字符分隔到一列中

    我想将向量中的每个字符串分成列 但我做不到 library tidyr library dplyr df lt data frame x c abe bas dds eer df gt separate x c A B C sep 1 我想
  • 数据表中的 NA

    我有一个data table其中包含一些组 我对每个组进行操作 有些组返回数字 其他组返回NA 因为某些原因data table很难将所有东西重新组合在一起 这是一个错误还是我误解了 这是一个例子 dtb lt data table a 1
  • svyby比例的置信区间

    是否存在创建置信区间的现有函数 从一个svyby比例对象 在我的例子中 是一个二进制项目的交叉表survey包裹 我经常比较各组之间的比例 如果有一个可以提取置信区间的函数 使用调查函数svyciprop而不是confint 下面的示例显示
  • dplyr 总结小计

    Excel 中数据透视表的一大优点是它们会自动提供小计 首先 我想知道 dplyr 中是否已经创建了任何可以实现此目的的东西 如果没有 实现它的最简单方法是什么 在下面的示例中 我按气缸和化油器的数量显示了平均排量 对于每组气缸 4 6 8
  • 如何在r中进行左连接[重复]

    这个问题在这里已经有答案了 我有两个数据集一和二 数据集一 a b c 111 a 1 112 b 2 113 c 3 114 d 4 115 e 5 数据集二 e d g 222 ss 11 111 ff 22 113 ww 33 114
  • 使用 lpSolve 优化 R 团队名单

    我是 R 新手 有一个想要解决的特定幻想运动队优化问题 我见过其他帖子使用 lpSolve 来解决类似的问题 但我似乎无法理解代码 下面的示例数据表 每个球员都在一个球队中 扮演着特定的角色 有薪水 并且每场比赛都有平均得分 我需要的限制是
  • 在R闪亮中,如何在UI端使用在SERVER端计算的值?

    在我的 R闪亮应用程序中 我想调整我的高度d3heatmap 见包装d3热图 https cran r project org web packages d3heatmap index html 作为我的数据框行数的函数 有一个论点heig
  • 在 R 中捕获段错误

    我得到了caught segfault每次我尝试从以下位置运行任何绘图函数时都会出错ggplot2包 1 0 0 我已经尝试过这个qplot geom dotplot geom histogram等来自包的数据 例如diamonds or
  • 枚举所有可能的二元组星座

    我正在寻找一种方法来枚举 n 个成员的所有可能的两人组星座 例如 对于 n 4 个成员 以下 3 个独特的组星座是可能的 请注意 组内成员的顺序和组顺序都不重要 1 2 3 4 1 3 2 4 1 4 2 3 例如 对于 n 6 个成员 可
  • 使用 fread 导入数据后所有列均作为字符

    我导入了一个 CSV 文件 包含文本列和数字列 x lt fread myfile csv header TRUE verbose T na strings c null null 但导入后 当我运行summary x 时 所有列都被视为字
  • R Shiny UI 子选项复选框?

    我有一个基本的 RShiny 应用程序 它有一个反应式复选框 它根据复选框中选择的数据 df 列 绘制时间序列数据 我当前的代码生成一个带有复选框输入的 UI 如下所示 Load R packages library shiny libra
  • 如何在 R 中创建循环来生成随机样本列表?

    我正在尝试创建一个循环来创建一系列包含随机样本的对象 如下所示 sample lt ceiling runif 9 min 0 max 20 这是圆形制服的示例 但它可以替换为普通 泊松或任何您想要的 因此 我构建了一个循环来自动生成各种生
  • R 在读取文件时添加额外的数字

    我一直在尝试读取一个包含日期字段和数字字段的文件 我的数据在 Excel 工作表中 如下所示 Date X 1 25 2008 0 0023456 12 23 2008 0 001987 当我在 R 中使用readxl read xlsx函
  • 获取所有参数作为列表

    R 是否提供对象 函数 方法 关键字来获取所有函数参数 使用一个例子 function a b default 会提供a and b也 在函数环境内 有没有类似的说法list 这还包括a and b在结果中 或者换一种方式 简写list a
  • 确定 R 中的组是否重复某个值

    我有一个包含许多列和行的数据 我想通过创建新的逻辑变量来确定某个组的值是否重复 相同 所以我的数据如下所示 v0 lt c 1 2 3 4 5 6 7 8 9 v1 lt c a b a c e c b b e v2 lt c R NA R
  • 为什么 as.character() 返回日期列表中的整数?

    我惊讶地发现 R 中出现以下行为 as character c Sys Date gt 1 2018 02 05 as character list Sys Date gt 1 17567 为什么会出现这种情况 也就是说 显然 17567

随机推荐

  • HTTPERR 日志:Request_Cancelled(对 WCF 服务进行故障排除时)

    我正在尝试解决访问 WCF 自托管服务的 WCF 客户端上的 连接被远程主机强制关闭 错误 我正在查看服务端计算机上 System32 LogFiles HTTPERR 中的 httperr 日志 每次在客户端上看到该错误时 我都会在日志中
  • 图形中的凸包 - Mathematica

    尝试使用计算几何包中的平面图绘制凸包 但在图形中使用时不起作用 关于如何使用 Graphics 绘制 ConvexHull 有什么想法吗 Needs ComputationalGeometry pts RandomReal 0 10 60
  • 如何在xtable的align参数中设置列宽和文本对齐方式?

    我想保留我设置的列的宽度align的论证xtable我想将所有数字列向右对齐 其他数字列向左对齐 标题向中间对齐 我找到了一些使用直接写入表格的解决方案rnw文件 但我想从文件加载数据 因为我的表很大 并且可以在创建knitr文档期间发生变
  • 按日期排序的两侧条形图

    我正在尝试创建一个双面条形图 如下所示这个答案 但我想按日期对条形进行排序 并将 x 轴标签更改为其他值 不是日期 我的数据集如下所示 date rival goals misses 1 2015 07 19 2 1 2 2015 07 2
  • grunt-express-server 与 contrib-watch

    我正在尝试同时使用两者grunt express server and grunt contrib watch然而 一旦我的快递服务器启动 它似乎就不再进行任何观看或重新加载 我有服务器设置在后台生成 我的项目在这里 https githu
  • Lua elseif 无法正常工作

    当我尝试使用elseif 它不起作用 在下面的代码中 无论用户输入哪个数字 唯一运行的代码是 if 语句下的代码 io write do you want to convert from celsius to farenheit 1 or
  • 绑定到列表框,但只显示选定的元素?

    我有一个绑定到 ListBox 的对象集合 但实际上我只想显示所选元素 而不是整个集合 解决这个问题的最佳方法是什么 使用不同的控件 我想我可以做一个 Visibility ValueConverter 来检查 IsSelected 属性
  • 获取php中的referrer URL(包括参数)

    是否有任何 HTTP 标头可供我使用网络服务器 服务器端脚本来获取整个引荐来源网址 包括查询字符串等 您应该能够从 SERVER HTTP REFERER 变量中获取它
  • 使用 Flutter API 加密读取 PEM 文件

    import package encrypt encrypt dart import package encrypt encrypt io dart import dart io import package pointycastle as
  • ZedGraph 用图表线平滑移动 Y2Axis

    在回答我的问题时 ZedGraph 自定义图表 我有每秒插入数据的图表 现在我有其他问题 如何用图表线平滑地向下移动Y2轴 DateTime类型 并在图表中始终只显示最后30分钟 如何格式化 Y2Axis 标签 HH mm 以获得 10 0
  • 返回类型:If 在函数中条件调用 sys.exit()

    假设我在控制台脚本 1 中有以下函数 def example x int gt typing Union typing NoReturn int if x gt 10 something is wrong if this condition
  • 如何防止创建两个字段值相同的记录?

    我有下表 CREATE TABLE people first name VARCHAR 128 NOT NULL nick name VARCHAR 128 NULL 我想防止人们在尝试插入时将昵称与名字相同 我不想在任一列上创建索引 只是
  • Java 同步和可重入锁定

    当我们同步一个对象时 这是一个可重入锁吗 同步锁和可重入锁之间有真正的区别吗 亲切的问候 是的 锁定synchronized关键字是可重入的 但它们之间的实现可能有所不同 例如 在 JVM 的早期版本中 ReentrantLock的实现比s
  • 如果 knit root.dir 更改,knitr::include_graphics() 无法找到文件

    knitr允许您通过更改来更改评估代码块的目录root dir option r setup include FALSE knitr opts knit set root dir Project 这也可以在 RStudio 的全局选项中更改
  • 文本视图行 - 建议

  • 如何更改控制器中的 $model->attributes 值 - Yii

    用户主控制器代码 public function actionUpdate id model this gt loadModel id if isset POST UserMaster model gt attributes POST Us
  • arm-linux-androideabi-g++:-fuse-linker-plugin,但找不到 liblto_plugin.so

    我在ubuntu 12 04下编译Chrome V8时遇到一个问题是 arm linux androideabi g 致命错误 fuse linker plugin 但找不到 liblto plugin so ndk版本是r8b 我怎么解决
  • 了解使用 Photoshop 生成的 24 位 PNG

    具有透明度的 24 位 png 文件 可以使用以下命令生成Photoshop 真的有 24 位分布在每种颜色加上 alpha 上吗 或者 24 位仅指颜色并忽略 alpha RGBA 8888 有没有工具可以检查 PNG 文件并验证此类信息
  • 具有多个图像的 Pod

    创建一个名为 xyz 的 pod 其中包含一个容器 用于在其中运行以下每个映像 指定的映像可能在 1 到 4 个之间 nginx redis Memcached consul 问题不太清楚 但假设您希望一个 Pod 具有多个容器 下面是可以
  • 错误:结果不是以下位置的数据框:

    我正在尝试在相当大的数据框上运行拟合函数 该数据框由名为的变量分组 big group and small group 特别是 我试图获得每个的预测和 coefs 值small group代替big group 也就是说 我试图将这些新列添