【发布时间】:2018-04-26 20:43:35
【问题描述】:
我最近是 R 编程的新手。
我想将现有的矩阵形式转换为新的形式。
我的矩阵如下,
数据()
1 2 3 4 5 6
1 0.60! 0.29! 1.42! 0.64 1.06 1.02
2 1.33! 0.68! 1.44! 1.44 1.05 1.03
3 0.60 0.67@ 0.64 1.37 2.40 1.00
4 1.37 0.29 1.43 0.63 1.05 2.32
5 1.39 0.68 1.40 1.46 1.06 1.02
6 0.63 0.68 0.61 1.46 1.74 1.05
7 1.39 0.68 1.01 0.65 2.43 2.27
....
我在第一行列出了 '!'和“@”便于理解。
我想要的是,
变量()
1 2 3 4 5 6 7
1 0.60! 0.29! 1.42! 1.33! 0.68! 1.44! 0.67@
2 0.29 1.42 0.64 0.68 1.44 1.44 0.64
3 1.42 0.64 1.06 1.44 1.44 1.05 1.37
4 0.64 1.06 1.02 1.44 1.05 1.03 2.40
5 1.33 0.68 1.44 0.60 0.67 0.64 0.29
6
….
我想将 1:2 行和 1:3 列的数据列在一行中,并将 (3,2) 的值定位到 vari 矩阵中的 (1,7)。
我认为它适用于 for 循环。我编写了代码,但是,这是我第一次编写代码。所以,效果不好。
这是我的试验......
x=matrix(nrow = nrow(data)-2, ncol = 8);
for ( i in 1:(nrow(data)))
{ for ( j in 1:(ncol(data)))
{
x[i,j]<-((c(as.vector(t(as.matrix(data[i:i+1,j:j+2]))),data[i+2,j+1])))
}
}
x
但是,它代表下面的句子
“数据错误[i:i + 1, j:j + 2]:下标越界”
请帮帮我!!!
【问题讨论】:
-
当您使用
j+2或j+1以及类似地I+1、i+2时,对于最后一列或最后一行,它会比数据集维度中的多1 或2 .您可以将代码更改为1:(nrow(data)-2),与j类似(未测试)
标签: r for-loop dataframe subset