Функция записи
Я пишу функцию для набора данных, называемую 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
Помощь очень ценится! Спасибо!
1 ответ
На данный момент вы передаете prodNum в виде числового значения, таким образом,
280-0213-00
оценивается как 67
(280-213-0= 67)
Вы должны пройти (и рассмотреть) prodNum
в виде строки символов (так как это то, что вы намерены)
то есть. "280-0213-00"