Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 如何同时将向量中的值相互转换?_R_Vector - Fatal编程技术网

R 如何同时将向量中的值相互转换?

R 如何同时将向量中的值相互转换?,r,vector,R,Vector,我有很多不同的方法来做这个向量。不知道你为什么要同时做 但是如果你真的被它迷住了,那么: b <- ifelse(b == 1, 2, 1) (在您将视为.integer(b)之前,它似乎不起作用) 这也应该更普遍地起作用,例如,b一系列不同的方法来实现这一点。不知道你为什么要同时做 但是如果你真的被它迷住了,那么: b <- ifelse(b == 1, 2, 1) (在您将视为.integer(b)之前,它似乎不起作用) 这也应该更普遍地起作用,例如,b您可以这样做: ife

我有很多不同的方法来做这个向量。不知道你为什么要同时做

但是如果你真的被它迷住了,那么:

b <- ifelse(b == 1, 2, 1)
(在您将
视为.integer(b)
之前,它似乎不起作用)


这也应该更普遍地起作用,例如,
b一系列不同的方法来实现这一点。不知道你为什么要同时做

但是如果你真的被它迷住了,那么:

b <- ifelse(b == 1, 2, 1)
(在您将
视为.integer(b)
之前,它似乎不起作用)


这也应该更普遍地起作用,例如,
b您可以这样做:

ifelse(b==1,2,1)

你可以这样做:

ifelse(b==1,2,1)

用简单的数学。如果
b
仅由1和2组成,请尝试:

3-b
#[1] 2 1 1 2 1 2 2 1 1 2
一般来说,您可以尝试:

(b==1)*2+(b==2)+b*(!b %in% 1:2)
例如:

set.seed(1)
b<-sample(10)
b
#[1]  3  4  5  7  2  8  9  6 10  1
(b==1)*2+(b==2)+b*(!b %in% 1:2)
#[1]  3  4  5  7  1  8  9  6 10  2
set.seed(1)

用简单的数学就可以了。如果
b
仅由1和2组成,请尝试:

3-b
#[1] 2 1 1 2 1 2 2 1 1 2
一般来说,您可以尝试:

(b==1)*2+(b==2)+b*(!b %in% 1:2)
例如:

set.seed(1)
b<-sample(10)
b
#[1]  3  4  5  7  2  8  9  6 10  1
(b==1)*2+(b==2)+b*(!b %in% 1:2)
#[1]  3  4  5  7  1  8  9  6 10  2
set.seed(1)

为什么它需要在同一时间?举例来说,你为什么不能把2s换成3s,1s换成2s,然后再把3s换成1s呢?换句话说,你能有一个中间阶段吗?我喜欢查找表方法:
map或
(!(b-1))+1
,使用自动0是
FALSE
,1是
TRUE
转换。(虽然这是一个相当迟钝的代码,但命名的向量
map
方法又好又清晰。)如果
b
仅由
1
2
组成,那么只要
3-b
就行了。我想它可以分开。我可能有错误的印象。非常感谢。我将尝试一下。为什么需要同时进行?举例来说,你为什么不能把2s换成3s,1s换成2s,然后再把3s换成1s呢?换句话说,你能有一个中间阶段吗?我喜欢查找表方法:
map或
(!(b-1))+1
,使用自动0是
FALSE
,1是
TRUE
转换。(虽然这是一个相当迟钝的代码,但命名的向量
map
方法又好又清晰。)如果
b
仅由
1
2
组成,那么只要
3-b
就行了。我想它可以分开。我可能有错误的印象。非常感谢。我会试一试。我不想那样概括,但它是有效的。同一想法的变体:
b+(b%在%1:2)*(3-2*b)
我不想那样概括,但它是有效的。同一想法的变体:
b+(b%在%1:2)*(3-2*b)
你忘了
(b==1)+1
:)@richardscriben当然,为什么不呢?正如我所说,有很多方法可以做到这一点:)你忘了
(b==1)+1
)@RichardScriven当然,为什么不呢!正如我所说,有很多方法可以做到这一点:)那么
b呢