首页 > 解决方案 > R样本选择基本问题与nrow

问题描述

我按照一个教程将 ds 拆分为几个 withsample并且效果很好。如果不了解下面示例中的数据集的幕后情况,我就无法入睡ind,它是否知道/记得mtcars某种方式,它只是单列整数。我在评论中指出了我想要得到的东西,R 如何知道数据集中标记为 1 或 2 的哪一行?

是的,我在基本语法上做了我的 Hwork,但这可能太简单了)

ind <- sample(2,nrow(mtcars), replace= T, prob = c(0.8,0.2))
ind
tdata <- mtcars[ind==1,]  # select rows where ind = 1 ??!! but we don't have ind column in mtcars???
vdata <- mtcars[ind==2,]

在亚当的帮助下更新了我的解释。

  1. ind -- 具有单列 int 的独立独立 ds。与 没有任何逻辑关系mtcars。我测试了这个手动创建它,它工作正常。
  2. 然后它使用逻辑向量,匹配从 mtcars 到 ind 的 rownum。类似于:让检查 mtcars 中的第 1 行匹配(按 rownum)来自 ind 的第 1 行的值为 1,因此 ind==1 转换为 True 并选择原始。

如果我错了,请纠正我。

标签: r

解决方案


(1) 这个语句是这样说的:“随机抽取数字 1 和 2 来替换 (32) 中有多少行的总数mtcars,并使得 1 有 80% 的机会被选中2 有 20% 的机会被选中。

ind <- sample(2,nrow(mtcars), replace= T, prob = c(0.8,0.2))

(2) 这行代码mtcars仅对向量 (ind) 为 1 的行进行子集化。代码ind==1正在创建一个逻辑向量(即,充满TRUEFALSE)值。只要有 1,ind==1就会有TRUE,否则就会有FALSE

tdata <- mtcars[ind==1,]

(3) 这行代码本质上与第 2 步做同样的事情,但对于ind.

vdata <- mtcars[ind==2,]

推荐阅读