Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.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
关于如何使用for循环比较列和向量输入的建议_R_Loops_For Loop_Dplyr_Tidyverse_Data.table - Fatal编程技术网

关于如何使用for循环比较列和向量输入的建议

关于如何使用for循环比较列和向量输入的建议,r,loops,for-loop,dplyr,tidyverse,data.table,R,Loops,For Loop,Dplyr,Tidyverse,Data.table,我想做一个计数向量,将许多列与一个称为真值的列进行比较。我真的不知道这是怎么回事,所以任何建议都会很有帮助,因为到目前为止这对我不起作用 k=13 for(i in 1:k){ TPR<- tumor %>% filter(tumor1[,i]==T) %>% filter(tumor1[,i]==truth) %>% tally() } k=13 对于(1:k中的i){ TPR%过滤器(tumor1[,i]==T)%%>%filter(tumor1[,i]==t

我想做一个计数向量,将许多列与一个称为
真值的列进行比较。我真的不知道这是怎么回事,所以任何建议都会很有帮助,因为到目前为止这对我不起作用

k=13
for(i in 1:k){
  TPR<- tumor %>% filter(tumor1[,i]==T) %>% filter(tumor1[,i]==truth) %>% tally() 
}
k=13
对于(1:k中的i){
TPR%过滤器(tumor1[,i]==T)%%>%filter(tumor1[,i]==truth)%%>%tally()
}
为了再现性,您可以使用此代码,但它确实令人尴尬,因此:

library(ggplot2)
library(dplyr)
library(tidyverse)

malig<-c(.49, .36, .58, .56, .61, .66)
benign<-c(.42, .22, .26, .53, .31 ,.41)

tumor<- NULL
tumor$malig<- malig
tumor$benign<- benign
tumor<-tumor %>% as.data.frame()

tumor<- tumor %>% pivot_longer(cols=c(malig,benign), names_to="status") %>% arrange(status)

cutoffs<-c(.2, .25, .3, .35, .37, .4, .45, .5, .55, .57, .6, .65, .7)

tumor<- tumor %>% mutate(tumor, Twenty = ifelse(value > .2, T, F))
tumor<- tumor %>% mutate(tumor, Twentyfive = ifelse(value > .25, T, F))
tumor<- tumor %>% mutate(tumor, Thirty = ifelse(value > .3, T, F))
tumor<- tumor %>% mutate(tumor, Thirtyfive = ifelse(value > .35, T, F))
tumor<- tumor %>% mutate(tumor, Thirtyseven = ifelse(value > .37, T, F))
tumor<- tumor %>% mutate(tumor, Forty = ifelse(value > .4, T, F))
tumor<- tumor %>% mutate(tumor, Fortyfive = ifelse(value > .45, T, F))
tumor<- tumor %>% mutate(tumor, Fifty = ifelse(value > .5, T, F))
tumor<- tumor %>% mutate(tumor, Fiftyfive = ifelse(value > .55, T, F))
tumor<- tumor %>% mutate(tumor, Fiftyseven = ifelse(value > .57, T, F))
tumor<- tumor %>% mutate(tumor, Sixty = ifelse(value > .6, T, F))
tumor<- tumor %>% mutate(tumor, Sixtyfive = ifelse(value > .65, T, F))
tumor<- tumor %>% mutate(tumor, Seventy = ifelse(value > .7, T, F))

tumor1<- tumor %>% mutate(tumor, truth=ifelse(status=="malig", T, F))
tumor1<- tumor1 %>% select(-value,-status)
k=13
for(i in 1:k){
  TPR<- tumor1 %>% filter(tumor1[,i]==T) %>% filter(tumor1[,i]==truth) %>% tally()
  
}
库(ggplot2)
图书馆(dplyr)
图书馆(tidyverse)
(表37,T,F)
肿瘤%突变(肿瘤,40=ifelse(值>0.4,T,F))
肿瘤%突变(肿瘤,Fortyfive=ifelse(值>0.45,T,F))
肿瘤%突变(肿瘤,50=ifelse(值>0.5,T,F))
肿瘤%突变(肿瘤,55=ifelse(值>0.55,T,F))
肿瘤%突变(肿瘤,57=ifelse(值>0.57,T,F))
肿瘤%突变(肿瘤,60=ifelse(值>0.6,T,F))
肿瘤%突变(肿瘤,六十五=ifelse(值>0.65,T,F))
肿瘤%突变(肿瘤,70=ifelse(值>0.7,T,F))
肿瘤1%突变(肿瘤,真值=ifelse(状态=“malig”,T,F))
1%选择(-value,-status)
k=13
对于(1:k中的i){
TPR%过滤器(tumor1[,i]==T)%%>%filter(tumor1[,i]==truth)%%>%tally()
}

也许您正在寻找这样的产品:

library(dplyr)

tumor1 %>% summarise(across(Twenty:Seventy, ~sum(. & truth)))
以R为基数的是:

colSums(tumor1[-ncol(tumor1)] & tumor1$truth)
以下是一种方法:

库(data.table)
lu_截止值=数据表(截止值=c(.2、.25、.3、.35、.37、.4、.45、.5、.55、.57、.6、.65、.7))
dt=setDT(堆栈(列表(malig=malig,良性=良性)))
dt[,ind:=as.character(ind)]
dt[ind=='malig'
][lu_截止线,
on=(值>截止值),
N
by=.EACHI]
#价值观
#      
# 1:   0.20     6
# 2:   0.25     6
# 3:   0.30     6
# 4:   0.35     6
# 5:   0.37     5
# 6:   0.40     5
# 7:   0.45     5
# 8:   0.50     4
# 9:   0.55     4
#10:   0.57     3
#11:   0.60     2
#12:   0.65     1
#13:   0.70     0
基本上,我们首先使用
堆栈
行简化
tidyr::pivot\u。然后,我们只过滤到
malig
,然后进行非等连接以查找截止值

这在很大程度上是一种等效的
dplyr
方法,尽管它将值放宽为0.70

tib=as_tible(堆栈(列表(malig=malig,良性=良性)))
tib%>%
交叉点(截止点)%>%
过滤器(值>截止值,
ind==“malig”)%>%
计数(截止值)
##tibble:12 x 2
#切断
#       
#  1   0.2       6
#  2   0.25      6
#  3   0.3       6
#  4   0.35      6
#  5   0.37      5
#  6   0.4       5
#  7   0.45      5
#  8   0.5       4
#  9   0.55      4
# 10   0.570     3
# 11   0.6       2
# 12   0.65      1

欢迎光临。你能让这个例子重现吗?这有助于海报了解您的预期结果。我感谢添加示例。那么预期的输出是什么呢?
truth
列和
tumor1
数据框架中所有其他列之间的共同观察数向量,您可以将其包含在代码中吗?我觉得示例代码可能有错误。查看您的
tumor1
返回的内容。我深表歉意。它现在应该像梦一样工作,直到for循环