r - 我无法在 R 中保存顺序结果的 for 循环?
问题描述
我的for
循环算法总是有不同的大小,因为 的输出不同seq
,因此,我无法保存结果。我怎样才能做到这一点?我被困在mat[?,?]
循环的一部分,请看下面的例子。我怎样才能做到这一点?
d<-data.frame(L1=c(1,6,8), L2=c(3,14,22))
mat<-matrix(c(0),15,2)
for (i in 1:nrow(d)) {
x1<-seq(d$L1[i],d$L2[i],2)
x1
for (k in seq_along(x1[-1])) {
L1<- x1[k]
L2<- x1[k+1]
mat[?,]<- c(L1+L2,L1-L2)
}
}
另外,对于nrow
初始矩阵mat
(这里是 15),你有什么建议。
节省的输出将是,对于i<-1
和k<-1
mat[1,]<-c(4,-2),
对于i<-2
和k<-1, k<-2, k<-3
和k<-4
mat[2,]<-c(14,-2), mat[3,]<-c(18,-2),mat[4,]<-c(22 ,-2) and mat[5,]<-c(22 ,-2)
等等..
解决方案
apply
使用which will尝试这种方法:
do.call(rbind, apply(d, 1, function(x) {
x1 <- seq(x[1], x[2], 2)
cbind(head(x1, -1) + tail(x1, -1), head(x1, -1) - tail(x1, -1))
}))
# [,1] [,2]
# [1,] 4 -2
# [2,] 14 -2
# [3,] 18 -2
# [4,] 22 -2
# [5,] 26 -2
# [6,] 18 -2
# [7,] 22 -2
# [8,] 26 -2
# [9,] 30 -2
#[10,] 34 -2
#[11,] 38 -2
#[12,] 42 -2
+
并且-
操作是矢量化的,因此您不需要for
循环来执行此操作。使用我们选择当前值和下一个值的组合head
。tail
推荐阅读
- android - 如何从 mp3 数组播放音频 [Android]
- css - Yii2 doesn't link styles
- c# - 带有用户名数据的 AutoCompleteCustomSource 不起作用
- java - JPA - 如何将 2 个@ManyToOne 映射到同一个父实体
- javascript - JavaScript 更改全局变量
- python - 如何从 Dataframe 对象字段中提取日期值
- c++ - 尝试访问私有多维数组时,程序在编译后卡住
- ansible - 将不同的 SSH 密钥分配给一个清单中的不同主机
- magento - magento 升级后未应用补丁
- python - psycopg2.sql 使用 sql.Identifier 插入变量类型导致类型“整数”不存在