我又难过了。
我有两个数据框
dataframe1
a b c
[1] 21 12 22
[2] 11 9 6
[3] 4 6 7
和
dataframe2
f g h
[1] 21 12 22
[2] 11 9 6
[3] 4 6 7
我想取第一列dataframe1并制作三个新数据帧,第二列分别是三个f,g和h
显然我可以一遍又一遍地做一个子集
subset1 <- cbind(dataframe1[,1]dataframe2[,1])
subset2 <- cbind(dataframe1[,1]dataframe2[,2])
但是我的数据帧将具有可变数量的列,并且数字排列非常长。所以我正在寻找一些更普遍的东西。我的数据框总是相同的长度。
我得到的最接近的是使用apply和cbind,但是我得到了一组三行a和f,a和g,a和h各自组合为单个数字向量或者我获得单个数据框架有四列,a,f,g,h。
非常感谢帮助。
答案 0 :(得分:4)
您可以使用lapply
迭代dataframe2
的列,如下所示:
lapply(dataframe2, function(x) as.data.frame(cbind(dataframe1[,1], x)))
这将产生一个列表对象,其中每个条目对应一列dataframe2
。例如:
$f
V1 x
1 21 21
2 11 11
3 4 4
$g
V1 x
1 21 12
2 11 9
3 4 6
$h
V1 x
1 21 22
2 11 6
3 4 7