![](/img/trans.png)
[英]How can I sort a dataframe by a predetermined order of factor levels in R?
[英]How can I iterate the levels of a factor in R?
我想創建一個函數,通過訪問第一個字母來幫助我識別因子級別中可能存在的錯誤,因此首先我將重點放在識別部分。
數據幀'''
alleles<-(c('A*24:02', 'A*11:01', 'blank', 'A*31:01'))
as.factor(alleles)
freq<-c(0.3782, 0.4209, 0.0362, 0.0761)
df<-data.frame(alleles, freq)
'''
我的嘗試_'''
for(i in df$alleles){
if (i != 'A'){
can<-c()
append(can, i)
df$alleles<-df$alleles[-c(can)]
}
}
'''錯誤消息-c(can) 中的錯誤:一元運算符的參數無效
觀察如果我執行 '''print(can)''' 輸出為“NULL”,這意味着它不能使用“append”。
你也可以試試:
#Data
alleles<-(c('A*24:02', 'A*11:01', 'blank', 'A*31:01'))
freq<-c(0.3782, 0.4209, 0.0362, 0.0761)
df<-data.frame(alleles, freq)
can<-c()
#Check
for(i in 1:length(df$alleles))
{
if (substr(df$alleles[i],1,1) != 'A'){
can <- c(can, as.character(df$alleles[i]))
}
}
#Apply
df<-df[-which(df$alleles %in% can),]
輸出:
df
alleles freq
1 A*24:02 0.3782
2 A*11:01 0.4209
4 A*31:01 0.0761
為什么不直接使用正則表達式?
df[grepl("^A", df$alleles),]
我們可以使用grep
df[grep("^A", df$alleles),]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.