R 如果。。。还可以使用数组和矩阵吗?

R 如果。。。还可以使用数组和矩阵吗?,r,R,两个问题:第一个问题是它只使用第一个元素,但我想我可以通过使用for()循环来解决它;第二个是它返回 aa <- seq(1, 10, 1) bb <- a * runif(n = 10, min = 0, max = 2) * 1000 cc <- cbind(aa, bb) if(aa / bb - 1 > .1) { cc } else { cc * 10 } 谢谢,函数ifelse()同样乐意接受向量和矩阵。稍微修改您的示例: Error: u

两个问题:第一个问题是它只使用第一个元素,但我想我可以通过使用
for()
循环来解决它;第二个是它返回

aa <- seq(1, 10, 1)
bb <- a * runif(n = 10, min = 0, max = 2) * 1000
cc <- cbind(aa, bb)

if(aa / bb - 1 > .1) {
    cc
}
else {
    cc * 10
}
谢谢,

函数
ifelse()
同样乐意接受向量和矩阵。稍微修改您的示例:

Error: unexpected 'else' in "else"
这样做的原因是数组和矩阵实际上是向量,带有一些额外的属性,这些属性定义了行和列的数量


关于
ifelse
的要点是,您的输入和输出应该具有相同数量的元素。

如果您想尝试以下操作:

ifelse(cc > 1000, -cc, cc * 10)
       aa          bb
 [1,]  10   2006.2160
 [2,]  20  -3636.6234
 [3,]  30    455.8483
 [4,]  40  -4939.6886
 [5,]  50  -3519.1552
 [6,]  60  -1359.0747
 [7,]  70  -2267.0220
 [8,]  80  -9232.1221
 [9,]  90  -5942.5760
[10,] 100 -19439.4255
sel.1

抄送[sel],尝试将
else
if
的结束
}
放在同一行。另外,在
bb
中,您的意思是
aa*runif…
?当使用
if
语句获得
缺少的值,其中需要TRUE/FALSE
?如果
是只接受单个标量(即一个元素)的不同函数,则@user1611518
是什么意思作为输入。你知道有没有办法处理数组和不匹配的维度吗?@user1611518我不明白你的意思。你能告诉我为了获得
if
命令的帮助,我必须输入什么吗<代码>?如果不接受
。那么您建议数组索引可以替换为如果语句。。。我必须试一试,如果它真的有效,我会让你知道:)
ifelse(cc > 1000, -cc, cc * 10)
       aa          bb
 [1,]  10   2006.2160
 [2,]  20  -3636.6234
 [3,]  30    455.8483
 [4,]  40  -4939.6886
 [5,]  50  -3519.1552
 [6,]  60  -1359.0747
 [7,]  70  -2267.0220
 [8,]  80  -9232.1221
 [9,]  90  -5942.5760
[10,] 100 -19439.4255
sel <- aa / bb - 1 > .1
cc[sel, ] <- 10 * cc[sel,]