R语言中iris数据集子集划分:训练集构建报错求助
解决iris数据集训练集构建的问题
你遇到的问题是因为在R中,&是逐元素的逻辑运算符,当你用1:10 & 21:150时,R会把短向量1:10循环扩展到和21:150一样的长度,然后逐元素做逻辑与,这显然不是你想要的“合并两个行索引区间”的效果,所以会出错。
这里有两种简便的正确方法:
方法1:合并行索引区间
直接用c()把两个行号区间合并起来,就能准确选取1-10行和21-150行:
# 先创建iris的副本(假设你需要iris_n) iris_n <- iris # 构建训练集 iris_train <- iris_n[c(1:10, 21:150), ] # 你的测试集写法是正确的 iris_test <- iris_n[11:20, ]
方法2:使用负索引(更简洁)
因为训练集其实就是**排除测试集(11-20行)**的所有行,所以可以直接用负索引选取,代码更短:
iris_train <- iris_n[-11:-20, ] iris_test <- iris_n[11:20, ]
两种方法都能得到你需要的训练集,第二种更简洁,推荐使用。
内容的提问来源于stack exchange,提问作者Roy
相关产品推荐
相关产品推荐

