如果要在循环中为多个列建立索引,我会努力工作。
我有一个嵌套的“ 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"}
}
}