我正在尝试将数据从一个数据帧添加到更大的数据帧中。基本上,在我的情况下,“df”是一个行长度为376的数据框,但我想将这376个项目放入“数据”中,其行长度为10000.我这样做的原因是因为我的数据在“df”中,每行限制为376项,每一行都不完整,一旦我将它们连接到更大的“数据”数据框中,我将连接在一起。下面显示的代码问题是,当我尝试将一行“df”转换为一行“数据”时,我得到数字而不是一些应该显示的字母名称(我假设数字是项目在内存中的位置)。如何修复我的代码,以便将实际的项目名称转移到“数据”?
df<-read.table("msigdb.v5.2.symbols.txt", fill = TRUE)
data<-data.frame(matrix(NA,ncol = 10000, nrow = 19337))
for (w in 1:20){
data[w,]<-df[w,]
}
数据[1,1]应该是“AAANWWTGC_UNKNOWN”,而我只是得到“5”
答案 0 :(得分:1)
这是因为您要将包含因子的data.frame
中的行替换为包含逻辑值的data.frame,默认情况下将df
值转换为整数。
请看下面的两个例子:
1)矩阵到data.frame
data<-data.frame(matrix(NA,ncol = 3, nrow = 3))
df<-(matrix(data=rep(c("pos1","pos2",3),3),nrow=3,byrow=FALSE))
str(df)
chr [1:3, 1:3] "pos1" "pos2" "3" "pos1" "pos2" "3" "pos1" "pos2" "3"
str(data)
'data.frame': 3 obs. of 3 variables:
$ X1: logi NA NA NA
$ X2: logi NA NA NA
$ X3: logi NA NA NA
data[1,]<-df[1,]
str(data)
'data.frame': 3 obs. of 3 variables:
$ X1: chr "pos1" NA NA
$ X2: chr "pos1" NA NA
$ X3: chr "pos1" NA NA
2)data.frame to data.frame
data<-data.frame(matrix(NA,ncol = 3, nrow = 3))
df<-data.frame(matrix(data=rep(c("pos1","pos2",3),3),nrow=3,byrow=FALSE))
str(df)
'data.frame': 3 obs. of 3 variables:
$ X1: Factor w/ 3 levels "3","pos1","pos2": 2 3 1
$ X2: Factor w/ 3 levels "3","pos1","pos2": 2 3 1
$ X3: Factor w/ 3 levels "3","pos1","pos2": 2 3 1
str(data)
'data.frame': 3 obs. of 3 variables:
$ X1: logi NA NA NA
$ X2: logi NA NA NA
$ X3: logi NA NA NA
data[1,]<-df[1,]
str(data)
'data.frame': 3 obs. of 3 variables:
$ X1: int 2 NA NA
$ X2: int 2 NA NA
$ X3: int 2 NA NA