我从未对R很熟练,并且在缺席后回来,所以我重新学习了很多东西.我有一个具有纬度和经度字段的数据集(命名数据).某些观察结果在这些字段中为"0",这是无效数据.我正在写一本R笔记本来记录我的发现.
我有:
Let's start by finding out how many records have 0 for latitude and longitude. If it's a great deal of records, we might not be able to rely on these fields:
```{r}
nrow(filter(data, latitude == 0.0))
nrow(filter(data, longitude == 0.0))
```
Okay, there are 12 rows that have 0 for latitude and 12 rows that have 0 for longitude. I'm willing to bet these are the same rows. Let's find out.
```{r}
filter(data, latitude == 0.0)
```
Run Code Online (Sandbox Code Playgroud)
以nrow()开头的前两行都显示了我期望的输出:
[1] 12
[1] 12
Run Code Online (Sandbox Code Playgroud)
但是,我希望输出与过滤条件匹配的12行的相同过滤器语句在运行块时会出现错误:
Error in vapply(x, obj_sum, character(1L)) : values must be length 1,
but FUN(X[[11]]) result is length 0
Run Code Online (Sandbox Code Playgroud)
我不明白为什么我会收到这个错误.'data'变量是一个tibble,如果这有所不同.
我肯定会欣赏这里发生的事情的解释.
我没有添加评论的声誉,所以虽然它实际上没有回答这个问题,但我会提供2美分作为答案.
我收到了类似的错误,我怀疑它与数据中的列列有关.这是一个可重复的例子:
```{r}
library (dplyr)
library (purrr)
# create data
mydata <-
tibble(col_a = rep(c("a", "b"), 5)) %>%
mutate(col_b = map(col_a, function (x) { list(a = x, b = x, c = x) }))
# filter
mydata %>% filter (col_a == "a")
```
Run Code Online (Sandbox Code Playgroud)
当我将其复制/粘贴到控制台时,最后一行代码按预期执行.但是,当我从R-markdown文档(使用R-studio中的"Ctrl + Enter"快捷方式)中删除它时,会产生错误:
Error in vapply(x, obj_sum, character(1L)) : values must be length 1,
but FUN(X[[1]]) result is length 3
Run Code Online (Sandbox Code Playgroud)
错误消息的最后"长度"部分取决于列表的长度col_b.
不知道该怎么做.解决方法可能是重新格式化任何列表列?