从R中的数据框中提取数字向量

时间:2013-05-23 08:03:47

标签: r

我有一个data.frame,如下例所示。我想在R中的一个函数中编写一个函数来为我做这两个任务?首先提取xy相同的数据框的值,我想将其保存为数字向量,并将其余部分作为数据框。

    d = data.frame(x = c(1,7, 2, 9, 11),y=c(6, 7, 8, 9,10))
    v = c(7, 9)
    w = data.frame(x=c(1, 2, 11), y=c(6, 8, 10))

我的愿望结果如下:

   > result
    $v
    [1] 7 9

    $w
       x  y
    1  1  6
    2  2  8
    3 11 10

2 个答案:

答案 0 :(得分:2)

也许with是你想要的?

with(d, list(v = x[x==y] ,w=d[x!=y,]))
$v
[1] 7 9

$w
   x  y
1  1  6
3  2  8
5 11 10

答案 1 :(得分:1)

这些方面的东西也应该这样做

splitdf <- function(df) {

    if (ncol(df) != 2) stop("df must have 2 columns")
    ind <- do.call("==", df)
    list(v = df[ind, 1], w = df[!ind, ])
}

d <- data.frame(x = c(1, 7, 2, 9, 11), y = c(6, 7, 8, 9, 10))
splitdf(d)
## $v
## [1] 7 9

## $w
##    x  y
## 1  1  6
## 3  2  8
## 5 11 10




df <- data.frame(x = c(1, 7, 2, 9, 11), z = c(7, 8, 10, 9,  12))
splitdf(df)
## $v
## [1] 9

## $w
##    x  z
## 1  1  7
## 2  7  8
## 3  2 10
## 5 11 12