对data.frame进行lapply和sapply测试每列中的所有元素以获取单个逻辑

快速反应
library(tidyverse)
df = data.frame(dates1 = c(20120631,NA,20130504,20161211),
                dates2 = c(201604,201503,NA,201201))
sapply(df,function(x) x %>% na.omit %>% as.character %>% nchar==8 %>% all)
lapply(df,function(x) x %>% na.omit %>% as.character %>% nchar==8 %>% all)
sapply(df,function(x) x %>% na.omit %>% as.character %>% nchar==8 %>% any)
lapply(df,function(x) x %>% na.omit %>% as.character %>% nchar==8 %>% any)

如果我对这样任何线索sapplylapply工作(我敢肯定这个工作昨天),这应该给我回单TRUEFALSE不是。我得到的是真与假矩阵。这不是什么any()all()应该做的。

贴上结果:

     dates1 dates2
[1,]  FALSE  FALSE
[2,]  FALSE  FALSE
[3,]  FALSE  FALSE

应用结果:

$dates1
[1] FALSE FALSE FALSE

$dates2
[1] FALSE FALSE FALSE

WTH正在进行吗?

G.格洛腾迪克

首先请注意,代码的问题在于操作顺序。%>%是在之前执行的,==但是我们要==在最后执行之前执行,%>%因此请使用括号将其强制执行。实际上,不需要此处所示的最里面的括号,因为默认的操作顺序已经适用于这些括号。但是,除了为清晰起见而添加的内容之外,我们还添加了其他内容。有关?Syntax提供操作顺序的完整表,请参见

sapply(df,function(x) ((x %>% na.omit %>% as.character %>% nchar) == 8) %>% all)
## dates1 dates2 
##   TRUE  FALSE 

但是,使用以下事实可能会更好地编写为以下内容:

  • nchar 已经强迫其论证性格,因此我们可以消除 as.character
  • . %>% whatever可以用来定义一个函数whatever,假设单个参数是点(。),则将其替换为函数体
  • {...}可以用来防止自动。插入:

给予:

df %>% sapply(. %>% na.omit %>% { nchar(.) == 8 } %>% all)
## dates1 dates2 
##   TRUE  FALSE 

或者如果需要在所有列上使用单个逻辑,则:

p <- df %>% sapply(na.omit) %>% { nchar(.) == 8 } 

p %>% all
## [1] FALSE

p %>% any
## [1] TRUE

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

来自分类Dev

将每一行与data.frame中的所有其他行进行比较

来自分类Dev

是否有可能基于行范围和r中的逻辑条件对data.frame进行子集化?

来自分类Dev

当行不消失时,删除data.frame中的所有空列和行

来自分类Dev

更改data.frame中的元素列

来自分类Dev

如何调用列表元素以计算新的data.frame列

来自分类Dev

data.frame中每一列的利润下降

来自分类Dev

如何按所有列对矩阵/data.frame进行排序

来自分类Dev

根据R中的两个索引获取data.frame中每一行的列范围

来自分类Dev

如何重命名data.frame中的单个列?

来自分类Dev

dplyr显示tbl_df中小data.frame的所有行和列

来自分类Dev

使用dplyR从R中data.frame的所有列中替换特殊字符串

来自分类Dev

更改R中已过滤的data.frame中一列中的所有值

来自分类Dev

测试data.frame中现有的row.names和col.names

来自分类Dev

获取文档中除id为'main-nav'的元素以外的所有元素。

来自分类Dev

将所有列转换为data.frame中的字符

来自分类Dev

R:如何检查data.frame中的所有列是否相同

来自分类Dev

如何从R中的列联表中获取带有案例的data.frame?

来自分类Dev

R:使用lapply将data.frame中的值用于列表的子集元素

来自分类Dev

基于向量对data.frame中的列进行分类

来自分类Dev

获取数据帧标题和每列i中的所有唯一值

来自分类Dev

如何使用lapply从传递给函数的列表中获取data.frame的名称

来自分类Dev

在R data.frame的每一行中填充丢失的元素

来自分类Dev

如何在R中创建具有匹配的行和列的data.frame列表

来自分类Dev

R中data.frame中每列的第N个最小值

来自分类Dev

在data.frame中添加一个布尔列,指示是否所有特定的列都是NA

来自分类Dev

将所有因子列转换为data.frame中的字符,而不影响非因子列

来自分类Dev

如何获取Data Frame Python中除一列以外的所有列?

来自分类Dev

Data.Frame中每一行的样本随机列

来自分类Dev

在data.frame中添加一行,每列有条件均值

TOP 榜单

热门标签

归档