3

我又被难住了。

我有两个数据框

数据框1

     a     b    c
[1]  21   12   22
[2]  11    9    6
[3]   4    6    7

数据框2

      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。

非常感谢您的帮助。

4

1 回答 1

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
于 2013-06-03T21:35:19.540 回答