从列表中的多个数据框中选择一列

时间:2016-08-04 13:37:09

标签: r list subset

我的列表包含多个数据框,只有两列

DateTime       Value 
30-06-2016      100
31-07-2016      200
.
.
.

我只想从列表中提取列。填充代码对我来说证明是不成功的。我在这做错了什么?

actual_data <- lapply(test_data, function(df) df[,is.numeric(df)])
> actual_data[[1]]

data frame with 0 columns and 12 rows

谢谢

1 个答案:

答案 0 :(得分:0)

purrr::map(lapply的增强版)为此类操作提供了一个快捷方式:

# Generate test data
set.seed(35156)

test_df   <- data.frame('DateTime' = rnorm(100), 'Value' = rnorm(100))
test_data <- rep(list(test_df), 100)

# Use `map` from the purrr package to subset the data.frames
purrr::map(test_data, 'Value')
purrr::map(test_data, 2)

正如您在上面的示例中所看到的,您可以通过名称,通过将字符串作为第二个参数传递给purrr::map来选择data.frame中的列,或者通过传递数字来按位置选择列。