如何在嵌套循环中为多列编制索引?

时间:2019-02-10 13:31:01

标签: r

如果要在循环中为多个列建立索引,我会努力工作。

我有一个嵌套的“ for”循环,其中我根据其他列中的值向数据框中的新列分配值。

数据框很大(对6000多个变量进行了80,000次观察),对于一个嵌套循环,我想查看列索引(例如data [,46:6000])

到目前为止,我已经尝试过:

# create example dataset:

id <- c(1,2,3,4,5,6,7,8,9,10)
capital1 <- replicate(1,sample(0:100,10,rep=TRUE))
capital2 <- replicate(1,sample(0:100,10,rep=TRUE))
capital3 <- replicate(1,sample(0:100,10,rep=TRUE))
capital4 <- replicate(1,sample(0:100,10,rep=TRUE))
capital5 <- replicate(1,sample(0:100,10,rep=TRUE))
capital6 <- replicate(1,sample(0:100,10,rep=TRUE))
capital7 <- replicate(1,sample(0:100,10,rep=TRUE))
capital8 <- replicate(1,sample(0:100,10,rep=TRUE))
capital9 <- replicate(1,sample(0:100,10,rep=TRUE))
capital10 <- replicate(1,sample(0:100,10,rep=TRUE))

data <- data.frame(id, capital1, capital2, capital3, capital4,
capital5, capital6, capital7, capital8, capital9, capital10)

# create new column to populate with results of loop

nrows<-length(data[,1])

AFT<-rep("N_A",nrows)

# loop through an index of columns

for (i in c(1:nrows)) {
    if(AFT[i] == "N_A"){
        if(data[,6:10] >= 50){
        AFT[i] <- "aft.multi"}
    }
}

我试图将“ AFT”分配给“ aft.multi”,无论第6:10列中每个单独变量的值大于或等于50。我想这样做是因为在我的实际数据中我需要查看大量的列,例如[,40:6000]。

运行代码时,我收到警告“条件的长度大于1,并且只会使用第一个元素”,听起来好像不喜欢索引吗?

对于可能会出错的任何建议,我将不胜感激。

我知道我可能也需要使用行标识符,但是我不确定将其放置在何处。例如,在接下来的其他循环中,我有如下工作代码:

for (i in c(1:nrows)) {
    if(AFT[i] == "N_A"){
        if(data$capital1[i] >= 60){
        AFT[i] <- "aft.productive"}
    }
}

0 个答案:

没有答案