当数据中有奇数行时,我希望随机从数据帧中删除一行.为此,我try 了以下方法:

df <- tibble(value 1:100) # Creating dataframe

df <- 
case_when(
nrow(df) %% 2 == 0 ~ df, # If even # of rows, keep df as is
                nrow(df) %% 2 != 0 ~ df[-sample(x = nrow(df), size = 1),] # If odd number of rows, randomly sample one row and remove it from df
)

我收到

错误:无法使用NA作为列索引,位置1为[.

任何帮助都将不胜感激!非常感谢.

推荐答案

我们可以将sliceif/else条件一起使用,而不是case_when,因为ifelse/case_when要求所有参数的长度相同.根据?case_when

LHS和RHS的长度可以是1或n.在所有情况下,n的值必须一致.n==0的情况被视为n!=1.

library(dplyr)
df %>% 
  slice(if(n() %% 2 != 0) -sample(row_number(), 1) else row_number() )

R相关问答推荐

如何编辑gMarginal背景以匹配绘图背景?

从BRM预测价值

打印XTS对象

以相同的方式对每个表进行排序

DEN扩展包中的RECT树形图出现异常行为

计算数据帧中指定值之前的行数,仅基于每行之后的future 行,单位为r

用R ggplot2求上、下三角形中两个变量的矩阵热图

如何对r中包含特定(未知)文本的行求和?

我将工作代码重构为一个函数--现在我想不出如何传递轴列参数

计算来自单独分组的分幅的值的百分位数

需要一个函数来在第一行创建一个新变量,然后用新变量替换一个不同的变量(对于多行)

R将函数参数传递给ggploy

R没有按顺序显示我的有序系数?

希望解析和复制R中特定模式的数据

R:部分修改矩阵对角线的有效方法

获取列位置

使用R中的`quote()`函数生成多变量表达式

如何在网页抓取中自动更改页码?

在R中更改GGally::ggpays中的基色?

基于Dplyr、Cumsum和LAG的陈年库存计划