关于如何使用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循环