主頁 > 軟體工程 > 從excel匯入期間R函式中未找到物件錯誤

從excel匯入期間R函式中未找到物件錯誤

2022-01-23 13:02:39 軟體工程

LCI.materials <- read.csv('LCImaterials.csv')

LCA.bridge <- function(length, width, height, thickness, girder.Option, deck.Option, materials) {
 
  prefab.girder.Section <- 0.78
  steel.girders.unitWeight <- 317 #the weight for HEM800 steel profile
  asphalt.Q <- length * width * thickness
  
  materials.split <- split(materials, materials$scope)
  
  # calculate the volume of the deck based on different materials strategies
  if(deck.Option == "RC") {
    deck.volume <- length * width * height
    interventions.deck <- 2.5
  } else if (deck.Option == "PRC") {
    deck.volume <- 0.5 * length * width * height
    interventions.deck <- 2
  } else if (deck.Option == "FRP") {
    deck.volume <- 0.2 * length * width * height
    interventions.deck <- 1
  }
  
  #girder options
  if (girder.Option == "PRC") {
    #get the numbers of girders
    n <-round(width / 3.75, 0)
    interventions.girders <- 2
    #get the volume of the concrete for the prefab girders
    girders.V <- n * prefab.girder.Section * length
  } else if (girder.Option == "steel") {
    n <- round(width / 3, 0)
    girders.V <- n * steel.girders.unitWeight * length
    interventions.girders <- 2
  } else if (girder.Option == "none") {
    n <- 0
    girders.V <- 0
    interventions.girders <- 0
  }
  
asphalt <- mutate(materials.split$asphalt, bridge.Q = asphalt.Q, interventions = 12)
deck <- mutate(materials.split[[deck.Option]], bridge.Q = deck.volume, interventions = interventions.deck)

if (!is.null(materials.split[[girder.Option]])) {
  girders <- mutate(materials.split[[girder.Option]], bridge.Q = girders.V, interventions = interventions.girders)
  LCA.matrix <- rbind(deck, girders, asphalt)
} else {
  LCA.matrix <- rbind(deck, asphalt)
}

LCA.matrix <- mutate(LCA.matrix, TotalMaterials.Q = **strong text**quantities * bridge.Q / 1000,
                     materials.LC = TotalMaterials.Q * interventions,
                     Energy.LC = materials.LC * energy,
                     CO2.LC = materials.LC * CO2 * 1000,
                     NOx.LC = materials.LC * NOx * 1000,
                     SO2.LC = materials.LC * SO2 * 1000)

LCA.results <- list(Energy = sum(LCA.matrix$Energy.LC),
                    CO2 = sum(LCA.matrix$CO2.LC),
                    NOx = sum(LCA.matrix$NOx.LC),
                    SO2 = sum(LCA.matrix$SO2.LC))

return(LCA.results)

}

b.length <- 16 # units: m
b.width <- 15 #units m
bd.depth <- 0.25 #units m
asphalt.tk <- 0.12 #units m

girder.Options <- c("PRC", "steel", "none")
deck.options <- c("RC", "PRC", "FRP")

Option1 <- LCA.bridge(b.length, b.width, bd.depth, asphalt.tk, girder.Options[1], deck.options[1], LCI.materials)

大家好。此 R 功能完全可以正常作業,沒有任何問題。它正在從 excel 中讀取一個小表格。我在問這個。這個函式如何才能很好地理解和閱讀數量列?我把它加粗了。我正在做與此功能類似的事情,但我總是收到錯誤訊息:

LCA.bridge 中的錯誤(b.length,b.width,b.height,b.thickness,column.Options 從 excel 匯入期間 R 函式中未找到物件錯誤

我想了解第一個代碼如何從小表中識別/理解/找到“數量”?我們如何使用 dplyr 和 mutate 從 R 中的 CSV 檔案中讀取列?你能給我解釋一下嗎?提前致謝。

uj5u.com熱心網友回復:

  LCA.matrix <- c(LCA.matrix | 
    mutate(TotalMaterials.Q = quantities * bridge.Q / 1000) |
    mutate(materials.LC = TotalMaterials.Q * interventions) |
    mutate(Energy.LC = materials.LC*energy) |
    mutate(CO2.LC = materials.LC*CO2*1000) |
    mutate(NOx.LC = materials.LC*NOx*1000) |
    mutate(SO2.LC = materials.LC*SO2*1000))
  

感謝您的想法,我洗掉了以前的并嘗試添加這個。但是仍然找不到bridge.Q。我無法理解這個問題。

uj5u.com熱心網友回復:

代碼的第一行讀取 .csv 檔案并將其傳輸到名為 LCI.materials 的 data.frame 物件:

LCI.materials <- read.csv('LCImaterials.csv')

為了測驗 p 目的,我用 2 行創建了這樣的檔案并加載了它。如果我們想看看里面有什么,head()函式會有所幫助:

head(LCI.materials)
  material scope quantities energy   CO2   NOx   SO2
1    Brick brick          1   3.56 0.271 0.050 0.100
2   Cement    RC        167   3.26 0.822 0.177 0.065

如您所見,這些列對應于您在.csv檔案中的這些列,包括quantities.

function的最后一個引數LCA.bridge是 named materials,當你在代碼的最后一行呼叫這個函式時:

Option1 <- LCA.bridge(b.length, b.width, bd.depth, asphalt.tk, girder.Options[1], deck.options[1], LCI.materials)

materialsLCI.materials資料框代替。在內部,函式將 拆分LCI.materialsscope

    materials.split <- split(materials, materials$scope)

還有另一個觀察:您的LCA.bridge函式asphalt在材料資料框中查找:

asphalt <- 
      mutate(materials.split$asphalt,
             bridge.Q = asphalt.Q,
             interventions = 12)

但是,在您的示例中(在小表中)沒有這樣的材料。這可能是個問題嗎?

格熱戈日

uj5u.com熱心網友回復:

LCI.materials <- read.csv('LCImaterials.csv')

LCA.bridge <- function(length, width, height, thickness, column.Option, abutment.Option, materials) {
    
  steel.unitWeight <- 317 #the weight for HEM800 steel profile
   
  materials.split <- split(materials, materials$scope)
  
  #column options
  if(column.Option == "RC") {
    column.volume <- length * width * height
    interventions.column <- 2
    } else if (column.Option == "steel") {
    column.volume <- length * width * height * thickness * steel.unitWeight
    interventions.column <- 3
   } 
  
  #abutment options
  if (abutment.Option == "RC") {
    abutment.volume <- height * length * 5 # 2 * height * length * 5 / 2 
    interventions.abutment <- 2
    } else if (abutment.Option == "brick") {
    abutment.volume <- height * length * 5 # 2 * height * length * 5 / 2 
    interventions.abutment <- 2
   } 
  
  column <- dplyr::mutate(materials.split[[column.Option]], bridge.Q = column.volume, interventions = interventions.column)
  abutment <- dplyr::mutate(materials.split[[abutment.Option]], bridge.Q = abutment.volume, interventions = interventions.abutment)
  
  LCA.matrix <- rbind(column, abutment)
  
  quantities <- split(materials, materials$quantities)
  
  LCA.matrix <- c(LCA.matrix, TotalMaterials.Q = quantities * bridge.Q / 1000,
                       materials.LC = TotalMaterials.Q * interventions,
                       Energy.LC = materials.LC * energy,
                       CO2.LC = materials.LC * CO2 * 1000,
                       NOx.LC = materials.LC * NOx * 1000,
                       SO2.LC = materials.LC * SO2 * 1000)
  
  LCA.results <- list(Energy = sum(LCA.matrix$Energy.LC),
                      CO2 = sum(LCA.matrix$CO2.LC),
                      NOx = sum(LCA.matrix$NOx.LC),
                      SO2 = sum(LCA.matrix$SO2.LC))
   return(LCA.results)
}

b.length <- 5
b.height <- 5
b.width <- 2
b.thickness <- 0.05

column.Options  <- c("RC","steel")
abutment.Options <- c("brick","RC")

Option1 <- LCA.bridge(b.length, b.width, b.height, b.thickness, column.Options[1], abutment.Options[1], LCI.materials)

謝謝你的回答。這很有用。實際上,這是我的代碼和該代碼之前的小表格。所以瀝青沒有問題。感謝您的想法,我添加了這一行。它奏效了。

quantities <- split(materials, materials$quantities)

但現在它可以找到bridge.Q。這些還不足以讓R找到bridge.Q嗎?我在這些變異中寫了 bridge.Q = column.volume。我該怎么辦@Grzegorz Sapijaszko?

column <- dplyr::mutate(materials.split[[column.Option]], bridge.Q = column.volume, interventions = interventions.column)
      abutment <- dplyr::mutate(materials.split[[abutment.Option]], bridge.Q = abutment.volume, interventions = interventions.abutment)

uj5u.com熱心網友回復:

它很有用,但是 mutate 還有另一個問題

不知道你想在這部分實作什么:

LCA.matrix <- c(LCA.matrix, TotalMaterials.Q = quantities * bridge.Q / 1000,
                       materials.LC = TotalMaterials.Q * interventions,
                       Energy.LC = materials.LC * energy,
                       CO2.LC = materials.LC * CO2 * 1000,
                       NOx.LC = materials.LC * NOx * 1000,
                       SO2.LC = materials.LC * SO2 * 1000)

如果打算計算額外的列,如 TotalMaterials.Q 等,則使用 mutate:

LCA.matrix <- LCA.matrix |> 
  mutate(TotalMaterials.Q = quantities * bridge.Q / 1000) |>
  mutate(materials.LC = TotalMaterials.Q * interventions)
  [...]

問候, 格熱戈日

uj5u.com熱心網友回復:

  LCA.matrix <- LCA.matrix |> 
    mutate(TotalMaterials.Q = quantities * bridge.Q / 1000) |>
    mutate(materials.LC = TotalMaterials.Q * interventions) |>
    mutate(Energy.LC = energy ) |>
    mutate(CO2.LC = CO2 * 1000) |>
    mutate(NOx.LC = NOx*1000) |>
    mutate(SO2.LC = SO2*1000)

應該做的伎倆

轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/419377.html

標籤:

上一篇:使用stringr提取模式

下一篇:將多個子標題轉換為R中的因子列

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • Git本地庫既關聯GitHub又關聯Gitee

    創建代碼倉庫 使用gitee舉例(github和gitee差不多) 1.在gitee右上角點擊+,選擇新建倉庫 ? 2.選擇填寫倉庫資訊,然后進行創建 ? 3.服務端已經準備好了,本地開始作準備 (1)Git 全域設定 git config --global user.name "成鈺" git c ......

    uj5u.com 2020-09-10 05:04:14 more
  • CODING DevOps 代碼質量實戰系列第二課,相約周三

    隨著 ToB(企業服務)的興起和 ToC(消費互聯網)產品進入成熟期,線上故障帶來的損失越來越大,代碼質量越來越重要,而「質量內建」正是 DevOps 核心理念之一。**《DevOps 代碼質量實戰(PHP 版)》**為 CODING DevOps 代碼質量實戰系列的第二課,同時也是本系列的 PHP ......

    uj5u.com 2020-09-10 05:07:43 more
  • 推薦Scrum書籍

    推薦Scrum書籍 直接上干貨,推薦書籍清單如下(推薦有順序的哦) Scrum指南 Scrum精髓 Scrum敏捷軟體開發 Scrum捷徑 硝煙中的Scrum和XP : 我們如何實施Scrum 敏捷軟體開發:Scrum實戰指南 Scrum要素 大規模Scrum:大規模敏捷組織的設計 用戶故事地圖 用 ......

    uj5u.com 2020-09-10 05:07:45 more
  • CODING DevOps 代碼質量實戰系列最后一課,周四發車

    隨著 ToB(企業服務)的興起和 ToC(消費互聯網)產品進入成熟期,線上故障帶來的損失越來越大,代碼質量越來越重要,而「質量內建」正是 DevOps 核心理念之一。 **《DevOps 代碼質量實戰(Java 版)》**為 CODING DevOps 代碼質量實戰系列的最后一課,同時也是本系列的 ......

    uj5u.com 2020-09-10 05:07:52 more
  • 敏捷軟體工程實踐書籍

    Scrum轉型想要做好,第一步先了解并真正落實Scrum,那么我推薦的Scrum書籍是要看懂并實踐的。第二步是團隊的工程實踐要做扎實。 下面推薦工程實踐書單: 重構:改善既有代碼的設計 決議極限編程 : 擁抱變化 代碼整潔代碼 程式員的職業素養 修改代碼的藝術 撰寫可讀代碼的藝術 測驗驅動開發 : ......

    uj5u.com 2020-09-10 05:07:55 more
  • Jenkins+svn+nginx實作windows環境自動部署vue前端專案

    前面文章介紹了Jenkins+svn+tomcat實作自動化部署,現在終于有空抽時間出來寫下Jenkins+svn+nginx實作自動部署vue前端專案。 jenkins的安裝和配置已經在前面文章進行介紹,下面介紹實作vue前端專案需要進行的哪些額外的步驟。 注意:在安裝jenkins和nginx的 ......

    uj5u.com 2020-09-10 05:08:49 more
  • CODING DevOps 微服務專案實戰系列第一課,明天等你

    CODING DevOps 微服務專案實戰系列第一課**《DevOps 微服務專案實戰:DevOps 初體驗》**將由 CODING DevOps 開發工程師 王寬老師 向大家介紹 DevOps 的基本理念,并探討為什么現代開發活動需要 DevOps,同時將以 eShopOnContainers 項 ......

    uj5u.com 2020-09-10 05:09:14 more
  • CODING DevOps 微服務專案實戰系列第二課來啦!

    近年來,工程專案的結構越來越復雜,需要接入合適的持續集成流水線形式,才能滿足更多變的需求,那么如何優雅地使用 CI 能力提升生產效率呢?CODING DevOps 微服務專案實戰系列第二課 《DevOps 微服務專案實戰:CI 進階用法》 將由 CODING DevOps 全堆疊工程師 何晨哲老師 向 ......

    uj5u.com 2020-09-10 05:09:33 more
  • CODING DevOps 微服務專案實戰系列最后一課,周四開講!

    隨著軟體工程越來越復雜化,如何在 Kubernetes 集群進行灰度發布成為了生產部署的”必修課“,而如何實作安全可控、自動化的灰度發布也成為了持續部署重點關注的問題。CODING DevOps 微服務專案實戰系列最后一課:**《DevOps 微服務專案實戰:基于 Nginx-ingress 的自動 ......

    uj5u.com 2020-09-10 05:10:00 more
  • CODING 儀表盤功能正式推出,實作作業資料可視化!

    CODING 儀表盤功能現已正式推出!該功能旨在用一張張統計卡片的形式,統計并展示使用 CODING 中所產生的資料。這意味著無需額外的設定,就可以收集歸納寶貴的作業資料并予之量化分析。這些海量的資料皆會以圖表或串列的方式躍然紙上,方便團隊成員隨時查看各專案的進度、狀態和指標,云端協作迎來真正意義上 ......

    uj5u.com 2020-09-10 05:11:01 more
最新发布
  • windows系統git使用ssh方式和gitee/github進行同步

    使用git來clone專案有兩種方式:HTTPS和SSH:
    HTTPS:不管是誰,拿到url隨便clone,但是在push的時候需要驗證用戶名和密碼;
    SSH:clone的專案你必須是擁有者或者管理員,而且需要在clone前添加SSH Key。SSH 在push的時候,是不需要輸入用戶名的,如果配置... ......

    uj5u.com 2023-04-19 08:41:12 more
  • windows系統git使用ssh方式和gitee/github進行同步

    使用git來clone專案有兩種方式:HTTPS和SSH:
    HTTPS:不管是誰,拿到url隨便clone,但是在push的時候需要驗證用戶名和密碼;
    SSH:clone的專案你必須是擁有者或者管理員,而且需要在clone前添加SSH Key。SSH 在push的時候,是不需要輸入用戶名的,如果配置... ......

    uj5u.com 2023-04-19 08:35:34 more
  • 2023年農牧行業6大CRM系統、5大場景盤點

    在物聯網、大資料、云計算、人工智能、自動化技術等現代資訊技術蓬勃發展與逐步成熟的背景下,數字化正成為農牧行業供給側結構性變革與高質量發展的核心驅動因素。因此,改造和提升傳統農牧業、開拓創新現代智慧農牧業,加快推進農牧業的現代化、資訊化、數字化建設已成為農牧業發展的重要方向。 當下,企業數字化轉型已經 ......

    uj5u.com 2023-04-18 08:05:44 more
  • 2023年農牧行業6大CRM系統、5大場景盤點

    在物聯網、大資料、云計算、人工智能、自動化技術等現代資訊技術蓬勃發展與逐步成熟的背景下,數字化正成為農牧行業供給側結構性變革與高質量發展的核心驅動因素。因此,改造和提升傳統農牧業、開拓創新現代智慧農牧業,加快推進農牧業的現代化、資訊化、數字化建設已成為農牧業發展的重要方向。 當下,企業數字化轉型已經 ......

    uj5u.com 2023-04-18 08:00:18 more
  • 計算機組成原理—存盤器

    計算機組成原理—硬體結構 二、存盤器 1.概述 存盤器是計算機系統中的記憶設備,用來存放程式和資料 1.1存盤器的層次結構 快取-主存層次主要解決CPU和主存速度不匹配的問題,速度接近快取 主存-輔存層次主要解決存盤系統的容量問題,容量接近與價位接近于主存 2.主存盤器 2.1概述 主存與CPU的聯 ......

    uj5u.com 2023-04-17 08:20:31 more
  • 談一談我對協同開發的一些認識

    如今各互聯網公司普通都使用敏捷開發,采用小步快跑的形式來進行專案開發。如果是小專案或者小需求,那一個開發可能就搞定了。但對于電商等復雜的系統,其功能多,結構復雜,一個人肯定是搞不定的,所以都是很多人來共同開發維護。以我曾經待過的商城團隊為例,光是后端開發就有七十多人。 為了更好地開發這類大型系統,往 ......

    uj5u.com 2023-04-17 08:18:55 more
  • 專案管理PRINCE2核心知識點整理

    PRINCE2,即 PRoject IN Controlled Environment(受控環境中的專案)是一種結構化的專案管理方法論,由英國政府內閣商務部(OGC)推出,是英國專案管理標準。
    PRINCE2 作為一種開放的方法論,是一套結構化的專案管理流程,描述了如何以一種邏輯性的、有組織的方法,... ......

    uj5u.com 2023-04-17 08:18:51 more
  • 談一談我對協同開發的一些認識

    如今各互聯網公司普通都使用敏捷開發,采用小步快跑的形式來進行專案開發。如果是小專案或者小需求,那一個開發可能就搞定了。但對于電商等復雜的系統,其功能多,結構復雜,一個人肯定是搞不定的,所以都是很多人來共同開發維護。以我曾經待過的商城團隊為例,光是后端開發就有七十多人。 為了更好地開發這類大型系統,往 ......

    uj5u.com 2023-04-17 08:18:00 more
  • 專案管理PRINCE2核心知識點整理

    PRINCE2,即 PRoject IN Controlled Environment(受控環境中的專案)是一種結構化的專案管理方法論,由英國政府內閣商務部(OGC)推出,是英國專案管理標準。
    PRINCE2 作為一種開放的方法論,是一套結構化的專案管理流程,描述了如何以一種邏輯性的、有組織的方法,... ......

    uj5u.com 2023-04-17 08:17:55 more
  • 計算機組成原理—存盤器

    計算機組成原理—硬體結構 二、存盤器 1.概述 存盤器是計算機系統中的記憶設備,用來存放程式和資料 1.1存盤器的層次結構 快取-主存層次主要解決CPU和主存速度不匹配的問題,速度接近快取 主存-輔存層次主要解決存盤系統的容量問題,容量接近與價位接近于主存 2.主存盤器 2.1概述 主存與CPU的聯 ......

    uj5u.com 2023-04-17 08:12:06 more