Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 如何筛选具有相同列名的数据帧?_R_Filter - Fatal编程技术网

R 如何筛选具有相同列名的数据帧?

R 如何筛选具有相同列名的数据帧?,r,filter,R,Filter,我正在读一个有多余列名的文本文件 file.txt A B B E E 2 2 4 4 5 3 4 5 6 8 我想保留列名为B和E的列。但是当我读文件的时候 rt<-read.table("file.txt",header=TRUE) A B B.1 E E.1 1 2 4 4 5 2 4 5 6 8 rt我们可以使用grep选择名称以B或E开头的列。默认情况下,data.frame不允许重复列名,实际上它在许多方面都非常有用 df1[

我正在读一个有多余列名的文本文件

file.txt

A  B  B  E  E
2  2  4  4  5
3  4  5  6  8
我想保留列名为B和E的列。但是当我读文件的时候

rt<-read.table("file.txt",header=TRUE)

  A B B.1 E E.1
  1 2 4   4 5
  2 4 5   6 8

rt我们可以使用
grep
选择
名称
B
E
开头的列。默认情况下,
data.frame
不允许重复列名,实际上它在许多方面都非常有用

 df1[grep("^(B|E)", names(df1))]
 #  B B.1 E E.1
 #1 2   4 4   5
 #2 4   5 6   8
但是,如果需要保留重复的列名,我们可以在
read.table/read.csv
中使用
check.names=FALSE
读取数据集,但我不建议这样做,因为这样会在子集设置时造成很多混乱。不使用
check.names
read.table
调用
make.unique
以获得
unique
列名,即使存在重复的列名

Another way of coding for the same   
 rt[!grepl("^A",colnames(rt))]
      B B.1 E E.1
      2   4 4   5
      4   5 6   8