我有一个fileA,它是一个包含许多列的基本数据框。
CHR SNP BP NMISS BETA SE R2 T P
22 rs62224314 16057427 118667 0.0064970 0.006882 7.512e-06 0.9442 0.3451
22 rs200923414 16287551 119802 -0.1338000 0.229400 2.839e-06 -0.5832 0.5598
22 rs138257221 16449078 119886 0.1082000 0.223600 1.954e-06 0.4840 0.6284
22 rs149999112 16449613 0 NA NA NA NA NA
等
和fileB,它是一个空格分隔的单行文件,看起来像这样
CHR SNP BP P
我想使用fileB中的值来使用R提取fileA中的相应列。到目前为止我的脚本是这样的:
## read in data file, must have tab separators and header
orig_data = read.table("fileA.txt", header=TRUE,sep="")
## read in column names
names_keep = read.table("fileB.txt", header=F,sep="")
w <- names_keep$V1
x <- names_keep$V2
y <- names_keep$V3
z <- names_keep$V4
当我检查这些值时:
> w
[1] CHR
Levels: CHR
> x
[1] SNP
Levels: SNP
> y
[1] BP
Levels: BP
> z
[1] P
Levels: P
它似乎正在做我想要的(从fileB中提取这4个值)。
但是,当我尝试使用这4个值从fileA数据框中提取这些特定列时:
newdata <- orig_data[,c(w,x,y,z)]
我刚刚重复第一栏4次:
CHR CHR.1 CHR.2 CHR.3
1 22 22 22 22
2 22 22 22 22
3 22 22 22 22
4 22 22 22 22
当我希望输出看起来像:
CHR SNP BP P
22 rs62224314 16057427 0.3451
22 rs200923414 16287551 0.5598
22 rs138257221 16449078 0.6284
22 rs149999112 16449613 NA
有谁知道我在哪里错了?