请考虑以下数据框:
TEST <- structure(list(Value = c(NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
Select = structure(c(2L, 1L, 3L, 2L, 2L, 1L, 1L,
2L, 1L, 1L, 3L, 3L), .Label = c("A", "B", "C"), class = "factor"),
A = c(5L, 5L, 4L, 3L, 4L, 3L, 5L, 3L, 3L, 4L, 5L, 4L),
B = c(10L, 8L, 7L, 6L, 3L, 8L, 8L, 7L, 8L, 9L, 11L, 8L),
C = c(0L, 1L, 3L, 2L, 0L, 3L, 0L, 2L, 0L, 1L, 1L, …Run Code Online (Sandbox Code Playgroud) 尝试使用 BNlearn 创建 BN,但我一直收到错误消息;
Error in check.data(data, allowed.types = discrete.data.types) : variable Variable1 must have at least two levels.
Run Code Online (Sandbox Code Playgroud)
它给了我每个变量的错误,即使它们都是因素并且有超过 1 个级别,正如您所看到的 - 在这种情况下,我的变量“模型”有 4 个级别
由于我无法共享变量和数据集,因此我创建了一个小集并属于数据集的代码。我遇到同样的问题。我知道我只共享了 2 个变量,但是所有变量都出现了相同的错误。
library(tidyverse)
library (bnlearn)
library(openxlsx)
DataFull <- read.xlsx("(.....)/test.xlsx", sheet = 1, startRow = 1, colNames = TRUE)
set.seed(600)
DataFull <- as_tibble(DataFull)
DataFull$Variable1 <- as.factor(DataFull$Variable1)
DataFull$TargetVar <- as.factor(DataFull$TargetVar)
DataFull <- na.omit(DataFull)
DataFull <- droplevels(DataFull)
DataFull <- DataFull[sample(nrow(DataFull)),]
Data <- DataFull[1:as.integer(nrow(DataFull)*0.70)-1,]
Datatest <- DataFull[as.integer(nrow(DataFull)*0.70):nrow(DataFull),]
nrow(Data)+nrow(Datatest)==nrow(DataFull)
FocusVar <- as.character("TargetVar")
BN.naive <- naive.bayes(Data, FocusVar)
Run Code Online (Sandbox Code Playgroud)
使用str(data) …
使用位置索引,例如:
> i <- c(3,1,2)
Run Code Online (Sandbox Code Playgroud)
如何使用索引从data.frame的第一行中提取第3个值,从第二行中提取第一个值,从第三行中提取第二个值,等等.
例如,使用上面的索引和:
> dframe <- data.frame(x=c("a","b","c"), y=c("d","e","f"), z=c("g","h","i"))
> dframe
x y z
1 a d g
2 b e h
3 c f i
Run Code Online (Sandbox Code Playgroud)
我想回复:
> [1] "g", "b", "f"
Run Code Online (Sandbox Code Playgroud)