我创建了两个数据帧:
x = list("a", "b",1,2)
m1=matrix(x,2,2)
colnames(m1) <- c("gene", "fc")
y = list("A", "B", "C",1,2,3)
m2 = matrix(y,3,2)
colnames(m2) <- c("gene", "fc")
df1 <- as.data.frame(m1)
df2 <- as.data.frame(m2)
我尝试使用合并这2个数据帧
merged <- merge(df1, df2, by=("gene"))
但我得到了这个错误:
sort.list(bx[m$neneneba xi])中出错:"x"必须是"sort.list"的原子你在名单上叫"排序"了吗?
我做错了什么?
错误背后的原因是,在您提到的数据帧中,列存储为list
,而不是基本数据类型,如整数、数字、字符、因子等。
当一个人运行这个命令时,就会对发生的事情有一些真正的了解
> str(df1)
'data.frame': 2 obs. of 2 variables:
$ gene:List of 2
..$ : chr "a"
..$ : chr "b"
$ fc :List of 2
..$ : num 1
..$ : num 2
解决方案:
1) 你可以这样存储数据帧:
df1 <- data.frame(gene = c('a','b'),fc = c(1,2))
df2 <- data.frame(gene = c('a','b','c'),fc = c(1,2,3))
merge(df1,df2,by='gene')