在dplyr中实验使用lapply()

时间:2014-09-10 08:28:14

标签: r dplyr

这与dplyr有关,我在调查上一个与ldply相关的问题时碰巧遇到了这种情况。我一直在努力理解dplyr。感谢SO上的一些帖子,我已经学到了很多东西。但是,我很难理解以下现象。

### Here is the sample data from my previous post.

time <- seq(as.Date("2014-09-01"), by = "day", length.out = 12)
temperature <- sample(c(15:26), replace = TRUE)
weather <- sample(c("clear", "cloudy", "rain"), size = 12, replace = TRUE)
rome <- data.frame(time, temperature, weather, stringsAsFactors = F)

time <- seq(as.Date("2014-09-01"), by = "day", length.out = 12)
temperature <- sample(c(12:23), replace = TRUE)
weather <- sample(c("clear", "cloudy", "rain"), size = 12, replace = TRUE)
paris <- data.frame(time, temperature, weather, stringsAsFactors = F) 

### Assign names to each data frame and create a list
ana <- list(rome = rome, paris = paris)

如果我想选择第1列和第2列,lapply(ana, [, 1:2)会这样做。但是,我在实验中使用dplyr,我想看看会发生什么。

ana %>%
lapply(., `[`, 1:2)

这返回了与lapply(ana, [, 1:2)完全相同的结果,这让我感到惊讶。我的理解是dplyr用于数据框架。 ana在这里是list。列表中有两个数据框,但ana仍然是一个列表。我进一步尝试了其他一些可能性。由于我对dplyr的了解不够好,我的语法可能不对。在这种情况下,请纠正我。

ana %>%
    do(function(x){
    lapply(x,`[`, 1:2)
    })

ana %>%
    do({lapply(.,`[`, 1:2)
    })

这些行返回了以下错误消息,这对我来说很有意义。

  

UseMethod出错(&#34;做&#34;):没有适用的方法来做&#39;做&#39;应用于   类的对象&#34; list&#34;

我的问题是为什么lapply在第一次尝试中起作用。由于我在这里调用函数,我想do()是必要的。在这种特定情况下,dplyr应该返回错误消息,因为不应该使用列表。非常感谢您抽出宝贵的时间。

0 个答案:

没有答案