这个R循环函数有什么问题?

时间:2013-04-02 00:29:10

标签: r loops

我正在尝试运行这样的循环函数:

x <- c(1,2,3,4,7,8,9,10,13,14,15,16,19,20,22,23,24,26) 
n<-rep(NA,length(x))
for (ii in 1:length(x)){
  n[ii]<-subset(dat1, Plot==ii)
}

但是,出现错误消息:

There were 18 warnings (use warnings() to see them)

我正在寻找的输出是来自主要数据dat1的18个单独数据n1,n2,n3,n4,n7,... n24和n26子集。

2 个答案:

答案 0 :(得分:2)

我在理解你想要做什么方面遇到了一些麻烦,但如果你有一个向量dat1,并且想要形成一个包含第一个,第二个,第二个的新向量n。 ..,dat1的第26个元素,这在R中很容易做到。试试:

> dat1 <- 1:60
> x <- c(1,2,3,4,7,8,9,10,13,14,15,16,19,20,22,23,24,26)
> n <- dat1[x]
> n
 [1]  1  2  3  4  7  8  9 10 13 14 15 16 19 20 22 23 24 26

答案 1 :(得分:1)

如果你要做的是创建data.frames的“向量”,每个对应于Plot变量的某个级别,你应该使用list,而不是一个vector

x <- c(1,2,3,4,7,8,9,10,13,14,15,16,19,20,22,23,24,26) 
n <- list()
length(n) <- length(x)

for (ii in 1:length(x)){
  n[[ii]] <- subset(dat1, Plot==ii)
}