首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过R中的for循环访问列表中的列表

通过R中的for循环访问列表中的列表
EN

Stack Overflow用户
提问于 2020-02-25 03:29:42
回答 1查看 40关注 0票数 0

我正在尝试迭代一个列表(在一个列表中),我遇到了一些麻烦,任何帮助都将不胜感激。

代码语言:javascript
复制
boston <- data.frame(Boston)
# Subset 1:  zn - 2, chas-4, rm-6, dis-8, black-12, 
# Subset 2:  crim-1, indus-3, nox-5, age-7, tax-10, ptratio-11
# Subset 3: all
kvals <- c(1,3,5)
subset1 <- c("zn", "chas", "rm", "dis", "black")
subset2 <- c("crim", "indus", "nox", "age", "tax", "ptratio")
subset3 <- c(boston[,1:13])


x1.train <- boston[, c(subset1)]
x2.train <- boston[, c(subset2)]
x3.train <- boston[, 1:13]
y.train <- boston$medv01

xtrain.list <- list(x1.train, x2.train, x3.train)    

for (j in kvals ){
  message("~~~~ K = ", j, " ~~~~")
  for (s in xtrain.list ){
    knn.cv.pred <- knn.cv(xtrain.list[[s]], 
                          y.train,
                          k = kvals[j])

    message("Subset ", s, " K = ", j, " Error: ", mean(knn.cv.pred != y.train)*100, "%")
  }
  message("\n")
}

但是我得到了这个错误

代码语言:javascript
复制
+ }
代码语言:javascript
复制
Error in xtrain.list[[s]] : invalid subscript type 'list'
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-02-25 03:46:22

*更新了更好的reprex以调用适当的库

在R you中,编写for循环的一种方法是在for循环中使用seq_along函数。

代码语言:javascript
复制
boston <- data.frame(MASS::Boston)
# Subset 1:  zn - 2, chas-4, rm-6, dis-8, black-12, 
# Subset 2:  crim-1, indus-3, nox-5, age-7, tax-10, ptratio-11
# Subset 3: all
kvals <- c(1,3,5)
subset1 <- c("zn", "chas", "rm", "dis", "black")
subset2 <- c("crim", "indus", "nox", "age", "tax", "ptratio")
subset3 <- c(boston[,1:13])


x1.train <- boston[, c(subset1)]
x2.train <- boston[, c(subset2)]
x3.train <- boston[, 1:13]
y.train <- boston$medv

xtrain.list <- list(x1.train, x2.train, x3.train)    



for (k in seq_along(kvals) ){
  message("~~~~ K = ", k, " ~~~~")
  for (s in seq_along(xtrain.list) ){
    knn.cv.pred <- class::knn.cv(xtrain.list[[s]], 
                          y.train,
                          k = kvals[[k]])

    message("Subset ", s, " K = ", k, " Error: ", mean(knn.cv.pred != y.train)*100, "%")
  }
  message("\n")
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60382707

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档