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呢