R语言Iris鸢尾花数据集抽取50条非随机指定物种行的实现问题
R语言鸢尾花抽样问题解决方案
原有代码错误原因
- 语法错误:R中提取数据框列需使用
$符号,鸢尾花数据集物种列名为大写开头的Species,iris.species是无效写法 - sample函数用法错误:直接将数据框
iris传入sample函数的第一个参数时,sample会默认对数据框的列进行抽样,而非行,不符合抽取行的需求
正确实现代码
和你已编写的前序代码衔接,完整可运行的实现如下:
set.seed(1) y <- sample(150, 1) x <- iris[y, 5] # 筛选出所有不属于选中物种的行索引 valid_idx <- which(iris$Species != x) # 无放回抽取50个索引 sampled_idx <- sample(valid_idx, size = 50, replace = FALSE) # 提取对应行得到最终结果 z <- iris[sampled_idx, ]
简化写法
也可以先过滤出符合条件的子集再抽样,代码更简洁:
set.seed(1) exclude_species <- iris[sample(150,1), 5] target_data <- iris[iris$Species != exclude_species,] z <- target_data[sample(nrow(target_data), 50, replace = FALSE),]
内容的提问来源于stack exchange,提问作者D idsea J
相关产品推荐
相关产品推荐

