举个例子,我R中导入了一个较大的行列数据,但是我只需要部分指定列,例如我只需要第1,3,5,7,9,11,13,15,17列(当然我需要的不仅仅这么多),并且将调出来的列数据重新生成一个行列数据表,该怎么写这个for循环,谢谢
不需要for循环呀,一句话搞定:newdata <- olddata[,c(1,3,5,7,9,11,13,15,17)]
我的意思是我要提取很多这样的列,不可能每一列都手动输进去,所以必须得用一个for循环
解答:newdata <- olddata[,icol]
意思是这里面icol是变的?
- col.l <- list(1:5, 4:8, c(3,4,5))
- newdata <- list()
- for (icol in 1:3) {
- newdata[[icol]] <- olddata[,col.l[[icol]]]
- }
谢谢,你写的代码好像跟我问的不符合,我的意思很简单,就是从现有数据框z中提取很多列(列是有规律的,符合2+4i,i<-1:262),如何写个for循环提取这样的列,然后再将这样提取出来的列形成一个新的数据框,前面有个兄弟说的这个不行吗?
- num<-seq(from=1,to=17,by=2)
- data[,num]
- 照你的意思,这样行吗?
- newdata <- olddata[,2+4*1:262]
我主要想用for循环,下面的方法只能出现最后一列,前面的列都被后面的覆盖了,所以只出现了最走一列
- cols <- 2+4*1:262
- newdata <- data.frame(matrix(NA, nrow(olddata), length(cols))
- for (icol in 1:length(cols)) {
- newdata[,icol] <- olddata[,cols[icol]]
- }
转载请注明:数据分析 » 如何用R语言在数据中提取指定列数据,并且形成一个新的数据表