0

您好,我有 2 个数据框:

df1 看起来像:

在此处输入图像描述

df2 看起来像:

在此处输入图像描述

我注意到 df1 有点符号 (.),而 df2 有“-”。这很奇怪,因为如果我用文本编辑器或 Excel 打开它们,它们都有“-”。

我需要的是删除与 df2 值匹配的 df1 的所有列。我用过这个:

DataGenSample = df1[,!(names(df1) %in% df2)]
#DataGenSample <- df1[ , !(colnames(df1) %in% df2)] 

但没有变化。

所有数据都可以在这里找到。使用我使用的代码。

# Data (df1):
DataGen <- read.table("data_CNA.txt",sep="\t", header=TRUE, check.names = FALSE)

# Samples (df2):
DeleteSample <- read.table("MuestrasEliminar.txt",sep="\t", header=TRUE, check.names = FALSE)

#Delete columns:

#DataGenSample = DataGen[,!(names(DataGen) %in% DeleteSample)]
DataGenSample <- DataGen[ , !(colnames(DataGen) %in% DeleteSample)] 

4

2 回答 2

0

问题是-vs .

当您读入数据时,您的 read 命令可能有一个类似的参数check.names,它会更改名称以使它们成为“标准” R 名称 - 这意味着除了_and之外没有标点符号.。如果您设置check.names = FALSE原始名称将被保留,并且您的代码应该可以正常工作。

于 2020-04-17T12:06:34.517 回答
0

好的,我发现您需要先将 df 转换为向量:

vecDeleteSample <- DeleteSample$SAMPLE_ID 

然后你可以删除你的向量/列表的数学列:

DataGenSample <- DataGen[,!(names(DataGen) %in% vecDeleteSample)]
于 2020-04-17T14:22:24.780 回答