1

部品番号の販売データに関する opps というデータ セットの関数を作成しており、そのデータを部品番号に固有の小さなデータ セットに分割しようとしています。引数「modNum」としてデータセットに名前を付けようとしています。これが私がこれまでに持っているものです-

# modNum (Modified Product Number) takes a product number that looks 
# like "950-0004-00" and makes it "opQty950.0004.00"
productNumber <- function(prodNum,modNum){

  path <- "C:/Users/Data/"
  readFile <- paste(path,"/opps.csv",sep="")
  oppsQty <- read.csv(file=readFile,sep=",")

  oppsQty$Line.Created.date <- as.Date(as.character(oppsQty$Line.Created),
                                      "%m/%d/%Y")

  modNum <- oppsQty[oppsQty$Part.Number=="prodNum",]
 }


productNumber(280-0213-00,opQty280.0213.00)
#Error: object 'opQty910.0002.01' not found

私が問題を抱えていると私が信じている行は

modNum <- oppsQty[oppsQty$Part.Number=="prodNum",]

コードが機能するためには、prodNum を括弧で囲む必要があるためですが、コードに括弧を入れると、prodNum は入力する引数として認識されなくなります。括弧を引数の中に入れると、このような、-

productNumber(280-0213-00,"opQty280.0213.00") 

まだ問題があります。
どうすればこれを回避できますか?

oppsQty$Part.Number 変数を数値 (以下に示す) に書き直して、括弧をまとめて削除できるようにしましたが、まだエラーが発生しています...

 productNumber <- function(prodNum,nameNum){

     path <- "C:/Users/Data"
    readFile <- paste(path,"/opps.csv",sep="")
    oppsQty <- read.csv(file=readFile,sep=",")

    oppsQty$Line.Created.date <- as.Date(as.character(oppsQty$Line.Created),
                                         "%m/%d/%Y")

    #ifelse(oppsQty$Part.Number=="Discount", 
    #       oppsQty$Part.Number=="000000000", 
    #       oppsQty$Part.Number)

    oppsQty$Part <- paste(substr(oppsQty$Part.Number,1,3),
                          substr(oppsQty$Part.Number,5,8),
                          substr(oppsQty$Part.Number,10,11),sep = "")

    oppsQty$Part <- as.numeric(oppsQty$Part)

    oppsQty$Part[is.na(oppsQty$Part)] <- 0

    nameNum <- oppsQty[oppsQty$Part==prodNum,]

 }
> productNumber(401110201,opQty401.1102.01)

Warning message:
In productNumber(401110201, opQty401.1102.01) : NAs introduced by coercion

助けていただければ幸いです。ありがとうございました!

4

1 に答える 1

2

現時点では、prodNum を数値として渡しているため、

280-0213-00として評価される67 (280-213-0= 67)

prodNum文字列として渡す (そして考慮する) 必要があります (これは意図したとおりです)。

すなわち。"280-0213-00"

于 2012-06-20T05:45:37.110 に答える