Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R语言中基于循环的代码修改_R - Fatal编程技术网

R语言中基于循环的代码修改

R语言中基于循环的代码修改,r,R,假设一个变量有7个因子(name\u ttl),每个因子都有被观察到的概率,如value\u ttl\u ben所述(基于训练集)。现在,假设出现了一个新观测向量(new\u DNS)。我想将向量的第四个值(即5)与因子级别“5”的概率值(即匹配向量特定值的级别)匹配。 这是我想到的,但我想知道如何才能使这更有效 value_ttl_ben <- c(0.1428571, 0.2200000, 0.3928571, 0.1214286, 0.0785714, 0.0428571, 0.00

假设一个变量有7个因子(
name\u ttl
),每个因子都有被观察到的概率,如
value\u ttl\u ben
所述(基于训练集)。现在,假设出现了一个新观测向量(
new\u DNS
)。我想将向量的第四个值(即5)与因子级别“5”的概率值(即匹配向量特定值的级别)匹配。 这是我想到的,但我想知道如何才能使这更有效

value_ttl_ben <- c(0.1428571, 0.2200000, 0.3928571, 0.1214286, 0.0785714, 0.0428571, 0.0014287)
name_ttl <- c("1", "2", "3", "4", "5", "6", "7")
BENIGN_TTL <- data.frame(Name=name_ttl, Amount=value_ttl_ben)
New_DNS <-c(36, 4, 3, 5, 4.68, 1.0056)
test1 <- as.matrix(BENIGN_TTL)
d <- NULL
for (i in 1:length(New_DNS[New_DNS %in% BENIGN_TTL$Name]))
{
  pos<-match(New_DNS[New_DNS %in% BENIGN_TTL$Name][i],test1)
  d<-c(d,test1[pos,2])
  d <- as.numeric(d)
} 
ttlb <- d[3]

value\u ttl\u ben您正在寻找的是所谓的
内部联接
,可以通过
data.table
包实现

library(data.table)

value_ttl_ben <- c(0.1428571, 0.2200000, 0.3928571, 0.1214286, 0.0785714, 0.0428571, 0.0014287)
name_ttl <- 1:7
dt_benign_ttl <- data.table(Name = name_ttl, Amount = value_ttl_ben)

dt_new_dns <- data.table(Name = c(36, 4, 3, 5, 4.68, 1.0056))

# inner join merge
new_dt_new_dns <- merge(dt_benign_ttl, dt_new_dns, by = "Name")

new_dt_new_dns # contains the new DNS data in name and then adds the Amount from the dt_benign_ttl
# Name    Amount
# 1:    3 0.3928571
# 2:    4 0.1214286
# 3:    5 0.0785714
库(data.table)

value\u ttl\u ben您正在寻找的是所谓的
内部联接
,它可以通过
data.table
包实现

library(data.table)

value_ttl_ben <- c(0.1428571, 0.2200000, 0.3928571, 0.1214286, 0.0785714, 0.0428571, 0.0014287)
name_ttl <- 1:7
dt_benign_ttl <- data.table(Name = name_ttl, Amount = value_ttl_ben)

dt_new_dns <- data.table(Name = c(36, 4, 3, 5, 4.68, 1.0056))

# inner join merge
new_dt_new_dns <- merge(dt_benign_ttl, dt_new_dns, by = "Name")

new_dt_new_dns # contains the new DNS data in name and then adds the Amount from the dt_benign_ttl
# Name    Amount
# 1:    3 0.3928571
# 2:    4 0.1214286
# 3:    5 0.0785714
库(data.table)

值\u ttl\u ben您可以使用%
中的
%来从良性\u ttl生成子集

value_ttl_ben <- c(0.1428571, 0.2200000, 0.3928571, 0.1214286, 0.0785714, 0.0428571, 0.0014287)
name_ttl <- c("1", "2", "3", "4", "5", "6", "7")
BENIGN_TTL <- data.frame(Name=name_ttl, Amount=value_ttl_ben)
New_DNS <-c(36, 4, 3, 5, 4.68, 1.0056)

d<-BENIGN_TTL[BENIGN_TTL$Name %in% New_DNS,2]

value\u ttl\u ben您只需使用%
中的
%即可从良性ttl中生成子集

value_ttl_ben <- c(0.1428571, 0.2200000, 0.3928571, 0.1214286, 0.0785714, 0.0428571, 0.0014287)
name_ttl <- c("1", "2", "3", "4", "5", "6", "7")
BENIGN_TTL <- data.frame(Name=name_ttl, Amount=value_ttl_ben)
New_DNS <-c(36, 4, 3, 5, 4.68, 1.0056)

d<-BENIGN_TTL[BENIGN_TTL$Name %in% New_DNS,2]

value\u ttl\u ben您想要什么还不完全清楚,像这样的事情似乎很容易<代码>良性\u TTL[良性\u TTL$Name%在%New\u DNS中,]
不完全清楚您想要什么,像这样的事情似乎很容易<代码>良性\u TTL[良性\u TTL$Name%在%New\u DNS中,]
是。完全一样。然后我可以提取我想要的值。太好了。很高兴能帮上忙!如果这给了你答案,请考虑把它标记为这样!计算方面呢?这样做需要更少的“努力”,对吗?是的。完全一样。然后我可以提取我想要的值。太好了。很高兴能帮上忙!如果这给了你答案,请考虑把它标记为这样!计算方面呢?这种方法需要更少的“努力”,对吗?这确实是一个简洁明了的解决方案。根据OP想要/需要什么(直截了当的与有组织的(例如,我更喜欢我的解决方案,因为它能更清晰地组织数据)),他可以选择其中之一。是@David。这就是我想要的!清晰和组织。干杯这确实是一个简洁明了的解决方案。根据OP想要/需要什么(直截了当的与有组织的(例如,我更喜欢我的解决方案,因为它能更清晰地组织数据)),他可以选择其中之一。是@David。这就是我想要的!清晰和组织。干杯