R 无效的下标类型 double

标签 r

我有如下所示的示例数据

Die     Device      Id      Vg     W   L 
  1     Device1       1       0    10   1 
  1     Device1     1.2     0.1    10   1 
  1     Device1     1.3     0.2    10   1
  1     Device2       1       0    10   2
  1     Device2     1.2     0.1    10   2 
  1     Device2     1.3     0.2    10   2
  1     Device3       1       0    10   3
  1     Device3     1.2     0.1    10   3 
  1     Device3     1.3     0.2    10   3

输出输出:
data_tidy <- structure(list(Die = c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L), Device = c("Device1", 
"Device1", "Device1", "Device2", "Device2", "Device2", "Device3", 
"Device3", "Device3"), Id = c(1, 1.2, 1.3, 1, 1.2, 1.3, 1, 1.2, 
1.3), Vg = c(0, 0.1, 0.2, 0, 0.1, 0.2, 0, 0.1, 0.2), W = c(10L, 
10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L), L = c(1L, 1L, 1L, 2L, 
2L, 2L, 3L, 3L, 3L)), .Names = c("Die", "Device", "Id", "Vg", 
"W", "L"), class = "data.frame", row.names = c(NA, -9L))

我正在使用以下代码插入 Vg 的值在指定 Id .
data_tidy %>% group_by(Die,Device) %>% 
    mutate(Vt=approx(x=log10(Id), y=Vg, xout=log10(3e-8*W/L))$y)

我收到一条错误消息

Error: invalid subscript type 'double'



我很惊讶,因为几天前我能够编译这段代码而没有任何错误。我也在论坛here上讨论过代码.我不确定是什么问题。任何帮助将不胜感激。

最佳答案

我认为问题是如果我们破坏代码,您正在尝试执行以下操作。
Vt

Vt=approx(x=log10(data_tidy$Id),y=data_tidy$Vg,
xout=log10(3e-8*(data_tidy$W)/(data_tidy$L)))

这给 Vt作为
> Vt
$x
[1] -6.522879 -6.522879 -6.522879 -6.823909 -6.823909 -6.823909 -7.000000 -7.000000
[9] -7.000000

$y
[1] NA NA NA NA NA NA NA NA NA

现在使用组合代码,我认为您正在尝试访问 x而不是 y
> data_tidy%>%
+     group_by(Die,Device)%>% #Die is numeric, Device is factor
+     mutate(Vt=(approx(x=log10(Id),y=Vg,xout=log10(3e-8*W/L)))$x)
Error: invalid subscript type 'double'

您正在尝试通过 mutate 中的 double 类型的下标为列表添加下标,这会导致此问题。如果你想要 x Vt 的元素变异。用
data_tidy%>%
    group_by(Die,Device)%>% #Die is numeric, Device is factor
    mutate(Vt=(approx(x=log10(Id),y=Vg,xout=log10(3e-8*W/L)))[["x"]])

这应该有效。

关于R 无效的下标类型 double,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32617830/

相关文章:

r - Hmisc 包和 Knit 中的 Latex() 生成的 Latex 表的奇怪行为

r - 如何在图例中获取 "type=b"行

r - 选择包含 R 中每日最大值的行

r - 管道结果到多个参数(使用 R 4.1+)

r - 构建可以从外部应用程序调用的 R 服务器 REST API 所需的建议?

r - 使用 dplyr 聚合数据框,同时保留其他变量

r - 在 ggplot2 中的密度图上应用渐变填充

r - 是否可以在 Shiny(传单外)中访问 R Leaflet 层控件?

r - 在 R 中的两个数据帧(返回最大值的 VLOOKUP)中找到相对于另一个的最大值

r - 一个图,多个时间序列,来自带有 ggplot2 的 CSV 文件