需要标记列以摆脱 NA 列:NAs numbered
need to label columns in order to get rid of NA columns: NAs numbered
我有两个文件必须link放在一起。
> dim(sample.details)
[1] 656 18
> dim(E.rna)
[1] 47323 656
我的工作是用另一列中的值标记一个文件数据框的列名。
ptr <- match( colnames(E.rna), sample.details$my_category_2 )
sample.details <- sample.details[ptr,] # reorder to correspond to rows of E.RNA
rownames(E.rna)<-outcome
我的问题是现在我已经正确标记了 E.rna 的列。我需要摆脱 'NA' 的值。不幸的是,以下命令不起作用...
E.rna_conditions_cleaned<-subset(E.rna, !is.na(colnames(E.rna)))
这是因为对列的重新标记只将具有 NA 值的列重新标记为 "NA.1, NA.2, NA.3....",所以我无法使用 'na.omit'.
删除它们
我能否以某种方式使用正则表达式连续删除 NA 列...?我的想法是:
subset(df, any df column name that does not == 'NA' followed by a 1-3 digit number)
我不熟悉正则表达式...有什么提示吗?
我认为您正在寻找以下正则表达式:
# build sample df
E.rna <- data.frame(U.95=1:5, HC.54=letters[6:10], NA.5=rnorm(5), KD.77=runif(5))
# get rid of unwanted variables
E.rna_conditions_cleaned <- E.rna[, grep("^NA", names(E.rna), invert=TRUE)]
grep
函数查找与模式“^NA”匹配的变量的索引(名称以 NA 开头) invert=TRUE 取这些索引的补码(那些不匹配模式的) .
这可以通过使用 grepl
和匹配 NA
后跟一个点 (.
) 后跟一个或多个数字 (\d+
) 的模式来完成列名,否定逻辑输出并使用它来子集列。
E.rna_conditions_cleaned<-E.rna_conditions_cleaned[!grepl("^NA\.\d+",
names(E.rna_conditions_cleaned))]
我有两个文件必须link放在一起。
> dim(sample.details)
[1] 656 18
> dim(E.rna)
[1] 47323 656
我的工作是用另一列中的值标记一个文件数据框的列名。
ptr <- match( colnames(E.rna), sample.details$my_category_2 )
sample.details <- sample.details[ptr,] # reorder to correspond to rows of E.RNA
rownames(E.rna)<-outcome
我的问题是现在我已经正确标记了 E.rna 的列。我需要摆脱 'NA' 的值。不幸的是,以下命令不起作用...
E.rna_conditions_cleaned<-subset(E.rna, !is.na(colnames(E.rna)))
这是因为对列的重新标记只将具有 NA 值的列重新标记为 "NA.1, NA.2, NA.3....",所以我无法使用 'na.omit'.
删除它们我能否以某种方式使用正则表达式连续删除 NA 列...?我的想法是:
subset(df, any df column name that does not == 'NA' followed by a 1-3 digit number)
我不熟悉正则表达式...有什么提示吗?
我认为您正在寻找以下正则表达式:
# build sample df
E.rna <- data.frame(U.95=1:5, HC.54=letters[6:10], NA.5=rnorm(5), KD.77=runif(5))
# get rid of unwanted variables
E.rna_conditions_cleaned <- E.rna[, grep("^NA", names(E.rna), invert=TRUE)]
grep
函数查找与模式“^NA”匹配的变量的索引(名称以 NA 开头) invert=TRUE 取这些索引的补码(那些不匹配模式的) .
这可以通过使用 grepl
和匹配 NA
后跟一个点 (.
) 后跟一个或多个数字 (\d+
) 的模式来完成列名,否定逻辑输出并使用它来子集列。
E.rna_conditions_cleaned<-E.rna_conditions_cleaned[!grepl("^NA\.\d+",
names(E.rna_conditions_cleaned))]