【问题标题】:Combine specific values of a dataframe into a dataframe将数据帧的特定值组合成一个数据帧
【发布时间】:2013-08-01 18:01:55
【问题描述】:

我有一个名为 current 的数据框,如下所示:

         V1           V2     V3    V4         V5
1  ILMN_1769720 ILMN_1705907  0 M0039 0.05788020
2  ILMN_1769720 ILMN_1715886  0 M0039 0.07251432
3  ILMN_1769720 ILMN_1652024  0 M0039 0.07069892
4  ILMN_1769720 ILMN_1759792  0 M0039 0.05534454
5  ILMN_1769720 ILMN_1783702  0 M0039 0.07328273
6  ILMN_1769720 ILMN_1763347  0 M0039 0.07546538
7  ILMN_1769720 ILMN_1777261  0 M0039 0.07563834
8  ILMN_1769720 ILMN_1699476  0 M0039 0.06454540
9  ILMN_1769720 ILMN_1813120  0 M0039 0.06648999
10 ILMN_1705907 ILMN_1715886  0 M0039 0.07282304

我要挑出第 1 列的第 1 个值,第 2 列的第 1 个值,第 2 列的第 2 个值,第 2 列的第 3 个值,第 2 列的第 4 个值,第 2 列的第 5 个值,第 2 列的第 6 个值,第 2 列的第 7 个值,第 2 列的第 8 个值和第 2 列的第 9 个值,并将所有这些组合成一个如下所示的数据框:

         V1          
1  ILMN_1769720 
2  ILMN_1705907
3  ILMN_1715886
4  ILMN_1652024
5  ILMN_1759792
6  ILMN_1783702
7  ILMN_1763347
8  ILMN_1777261
9  ILMN_1699476
10 ILMN_1813120

到目前为止,我已经尝试过as.data.frame(current[1,1],current[1,2],current[2,2],current[3,2],current[4,2],current[5,2],current[6,2],current[7,2],current[8,2],current[9,2]),但它似乎不起作用。我也尝试过rbind(current[1,1],current[1,2],current[2,2],current[3,2],current[4,2],current[5,2],current[6,2],current[7,2],current[8,2],current[9,2]),但这也不起作用。有什么建议吗?

【问题讨论】:

  • 不应该c(current[1,1],current[1:9,2]) 解决您的问题吗?如果第 1 列和第 2 列是因子,请尝试:c(as.character(current[1,1]),as.character(current[1:9,2]))

标签: r


【解决方案1】:

如果您的 data.frame 名为 dat,您可以使用 mapply,如下所示:

data.frame(V1 = mapply(function(x, y) dat[x, y], c(1, 1:9), c(1, rep(2, 9))))

##              V1
## 1  ILMN_1769720
## 2  ILMN_1705907
## 3  ILMN_1715886
## 4  ILMN_1652024
## 5  ILMN_1759792
## 6  ILMN_1783702
## 7  ILMN_1763347
## 8  ILMN_1777261
## 9  ILMN_1699476
## 10 ILMN_1813120

【讨论】:

  • 非常酷。不知道apply 可以很好地绕过factors
【解决方案2】:
current <- read.table(header=TRUE,row.names=1,text="V1           V2     V3    V4         V5
1  ILMN_1769720 ILMN_1705907  0 M0039 0.05788020
2  ILMN_1769720 ILMN_1715886  0 M0039 0.07251432
3  ILMN_1769720 ILMN_1652024  0 M0039 0.07069892
4  ILMN_1769720 ILMN_1759792  0 M0039 0.05534454
5  ILMN_1769720 ILMN_1783702  0 M0039 0.07328273
6  ILMN_1769720 ILMN_1763347  0 M0039 0.07546538
7  ILMN_1769720 ILMN_1777261  0 M0039 0.07563834
8  ILMN_1769720 ILMN_1699476  0 M0039 0.06454540
9  ILMN_1769720 ILMN_1813120  0 M0039 0.06648999
10 ILMN_1705907 ILMN_1715886  0 M0039 0.07282304")

data.frame(V1=c(as.character(current[1,1]),as.character(current[1:9,2])))
             V1
1  ILMN_1769720
2  ILMN_1705907
3  ILMN_1715886
4  ILMN_1652024
5  ILMN_1759792
6  ILMN_1783702
7  ILMN_1763347
8  ILMN_1777261
9  ILMN_1699476
10 ILMN_1813120

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-02
    • 2021-05-17
    相关资源
    最近更新 更多