我有這樣一段代碼:打印值
data <- read.csv("small.csv",header=TRUE, sep=",")
data$normal = as.character(data$normal)
data$normal[data$normal == "ipsweep"] = "3"
data$normal[data$normal == "portsweep"] = "3"
data$normal[data$normal == "nmap"] = "3"
data$normal[data$normal == "satan"] = "3"
data$normal[data$normal == "buffer_overflow"] = "5"
data$normal[data$normal == "loadmodule"] = "5"
data$normal[data$normal == "perl"] = "5"
data$normal[data$normal == "rootkit"] = "5"
data$normal[data$normal == "back"] = "1"
data$normal[data$normal == "land"] = "1"
data$normal[data$normal == "neptune"] = "1"
data$normal[data$normal == "pod"] = "1"
data$normal[data$normal == "smurf"] = "1"
data$normal[data$normal == "teardrop"] = "1"
data$normal[data$normal == "ftp_write"] = "4"
data$normal[data$normal == "guess_passwd"] = "4"
data$normal[data$normal == "imap"] = "4"
data$normal[data$normal == "multihop"] = "4"
data$normal[data$normal == "phf"] = "4"
data$normal[data$normal == "spy"] = "4"
data$normal[data$normal == "warezclient"] = "4"
data$normal[data$normal == "warezmaster"] = "4"
data$normal[data$normal == "normal"] = "2"
data = data[!(data$normal=="0.00"),]
data = data[!(data$normal==""),]
data$normal = factor(data$normal)
When I run: `data$normal`, it gives the following output
[1] 2 1 2 2 1 1 1 1 1 1 1 2 4 1 1 2 3 2 2 1 1 2 2 1 2 1 2 2 2 3 1 2 3 2 2 2 1 2 1 1 1 2 2 2 1 1 2 4 1 2 1 1 2 2 2 3 1 1
現在我想打印在每一行的水平相關聯的值,但它返回所有FALSE
或0
。例如:
x<-data[normal=="neptune",]
如何打印其行值neptune
但不是1
每列?
當我運行'數據$ normal'它給我'數據$正常的錯誤:類型「封」的對象不subsettable' 。您應該構建一個讓您的問題可重現的示例。 – jbaums
*「我有這段代碼」* Ahhhh!爲什麼你有這段代碼!刪除它,製作一個查找表(實質上是你要求的「與關卡相關的值」),並做一個「合併」或某物而不是那個怪物。 – Gregor
並認識到,如果你按照你所做的方式來做事情,那麼你只需重寫值並**不保存映射。一旦你將''ipsweep''和''portsweep''和''nmap''全部設置爲''3「',就沒有回頭路了!你所擁有的只是一堆價值''3「'和你用來到達那裏的代碼。 – Gregor