使用与现有data.frame相同的列和行名称初始化空白data.frame

bro*_*ter 4 r initialization matrix dataframe

有没有更好的方法来创建一个空白的data.frame,它具有与现有data.frame相同的维度,列名和行名称?

BAM<-read.table(~/myfile)  # 10 rows and 10 columns, full of data
print(BAM)

              SNP AZ04 AZ05 AZ06 AZ07 AZ08 AZ09 AZ10 AZ11 AZ12
1    0512930_3028    1   15    3    3    2    0    2    9    4
2   0512933_33862    0    7    1    5   18    2    4   10    5
3   0512933_33866    0    7    1    5   18    2    4   10    5
4   0512933_49263    4   12   15   14   14    9    7   15   15
5  0512933_315059    2    3    6    6   18    3   11    3   14
6  0512933_319854    4    3   10    6    8    2    6   12    8
7  0512933_330379    0   12    5    0   16    1    8   10    7
8  0512933_359868    9    9    7    9   18    9   16   14   11
9  0512933_390380    8   18   19   10   26   10   12   17   18
10 0512933_405563    2   10   13   10   17   14   10   13   14


Initial.matrix<-matrix(nrow=nrow(BAM), ncol=ncol(BAM), dimnames=list(1:(ncol(BAM)), (colnames(BAM))))
Blank.data.frame<-data.frame(Initial.matrix)
Blank.data.frame$SNP=BAM$SNP
print(Blank.data.frame)

              SNP AZ04 AZ05 AZ06 AZ07 AZ08 AZ09 AZ10 AZ11 AZ12
1    0512930_3028   NA   NA   NA   NA   NA   NA   NA   NA   NA
2   0512933_33862   NA   NA   NA   NA   NA   NA   NA   NA   NA
3   0512933_33866   NA   NA   NA   NA   NA   NA   NA   NA   NA
4   0512933_49263   NA   NA   NA   NA   NA   NA   NA   NA   NA
5  0512933_315059   NA   NA   NA   NA   NA   NA   NA   NA   NA
6  0512933_319854   NA   NA   NA   NA   NA   NA   NA   NA   NA
7  0512933_330379   NA   NA   NA   NA   NA   NA   NA   NA   NA
8  0512933_359868   NA   NA   NA   NA   NA   NA   NA   NA   NA
9  0512933_390380   NA   NA   NA   NA   NA   NA   NA   NA   NA
10 0512933_405563   NA   NA   NA   NA   NA   NA   NA   NA   NA
Run Code Online (Sandbox Code Playgroud)

上面的代码让我得到了我想要的东西.有更清洁或更简单的方法吗?

谢谢,安娜(R的初学者)

Jos*_*ich 5

只需创建一个副本BAM并乘以所有数字元素NA.

Blank.data.frame <- BAM
Blank.data.frame[,-1] <- Blank.data.frame[,-1] * NA
Run Code Online (Sandbox Code Playgroud)

或者,更一般地说:

Blank.data.frame <- BAM
numCols <- sapply(Blank.data.frame, is.numeric)
Blank.data.frame[,numCols] <- Blank.data.frame[,numCols] * NA
Run Code Online (Sandbox Code Playgroud)