删除 R (flowCore) 中的 S4 class 列
Removing S4 class column in R (flowCore)
我使用 Bioconductor 中的包 flowCore
,它以 S4 class 格式读取我的数据文件。您可以键入 library(flowCore)
,然后键入 data(GvHD)
以加载示例数据集。当您键入 GvHD
时,您可以看到该数据集由 35 个实验组成,可以通过键入 GvHD[[1]]
来单独访问这些实验。
现在我试图从 所有 实验中删除两列 FSC-H
和 SSC-H
,但我没有成功。
我试过myDataSet<- within(GvHD, rm("FSC-H","SSC-H"))
,但没用。如果有任何帮助,我将不胜感激。
rm
不适用于删除列。正常程序是将 NULL
分配给该列:
for (i in 1:35){
GvHD[[i]][,c("FSC-H","SSC-H")] <- NULL
}
这与您对数据框所做的相同。
我在 flowCore
的相关 GitHub page 上发布了我的问题,答案由 Jacob Wagner.
提供
GvHD[[1]]
是一个 flowFrame
,不是一个简单的数据框,这就是 NULL 赋值不起作用的原因。底层表示也是一个矩阵,它也不支持通过分配 NULL
.
来删除列
如果您想要删除列,可以通过以下几种方式进行。请注意,对于所有这些,我正在对整个 flowSet
的列进行子集化,而不是遍历每个 flowFrame
。但是您也可以对每个 flowFrame
执行这些操作。
如 Greg 所述,选择您要保留的列:
data(GvHD)
all_cols <- colnames(GvHD)
keep_cols <- all_cols[!(all_cols %in% c("FSC-H", "SSC-H"))]
GvHD[,keep_cols]
或者您可以只过滤子集:
GvHD[,!colnames(GvHD) %in% c("FSC-H", "SSC-H")]
您也可以获取要删除的数字索引,然后使用负子集。
# drop_idx <- c(1,2)
drop_idx <- which(colnames(GvHD) %in% c("FSC-H", "SSC-H"))
GvHD[,-drop_idx]
我使用 Bioconductor 中的包 flowCore
,它以 S4 class 格式读取我的数据文件。您可以键入 library(flowCore)
,然后键入 data(GvHD)
以加载示例数据集。当您键入 GvHD
时,您可以看到该数据集由 35 个实验组成,可以通过键入 GvHD[[1]]
来单独访问这些实验。
现在我试图从 所有 实验中删除两列 FSC-H
和 SSC-H
,但我没有成功。
我试过myDataSet<- within(GvHD, rm("FSC-H","SSC-H"))
,但没用。如果有任何帮助,我将不胜感激。
rm
不适用于删除列。正常程序是将 NULL
分配给该列:
for (i in 1:35){
GvHD[[i]][,c("FSC-H","SSC-H")] <- NULL
}
这与您对数据框所做的相同。
我在 flowCore
的相关 GitHub page 上发布了我的问题,答案由 Jacob Wagner.
GvHD[[1]]
是一个 flowFrame
,不是一个简单的数据框,这就是 NULL 赋值不起作用的原因。底层表示也是一个矩阵,它也不支持通过分配 NULL
.
如果您想要删除列,可以通过以下几种方式进行。请注意,对于所有这些,我正在对整个 flowSet
的列进行子集化,而不是遍历每个 flowFrame
。但是您也可以对每个 flowFrame
执行这些操作。
如 Greg 所述,选择您要保留的列:
data(GvHD)
all_cols <- colnames(GvHD)
keep_cols <- all_cols[!(all_cols %in% c("FSC-H", "SSC-H"))]
GvHD[,keep_cols]
或者您可以只过滤子集:
GvHD[,!colnames(GvHD) %in% c("FSC-H", "SSC-H")]
您也可以获取要删除的数字索引,然后使用负子集。
# drop_idx <- c(1,2)
drop_idx <- which(colnames(GvHD) %in% c("FSC-H", "SSC-H"))
GvHD[,-drop_idx]