how to extract index in factor vector in Rpy2

时间:2015-04-23 05:13:46

标签: python r vector rpy2

I have a factor vector sv='ababbc' and a integer vector fv=[1,1,1,1,1,1]. fv is correspond to sv.

import rpy2.robjects as robjects
sv=robjects.StrVector('ababbc')
fac=robjects.FactorVector(sv)
fv=robjects.r['rep'](1,6)

I want to change the value of element to 2 in fv, which of index correspond to letter “a”. made fv=[2,1,2,1,1,1]

How to do it? Thank you.

1 个答案:

答案 0 :(得分:0)

获取索引时为true:

fac

第1和第3个职位的字母是'a'。

你不能用In [55]: np.argwhere(np.array(fac) == 'a') Out[55]: array([], shape=(0, 1), dtype=int64) In [56]: np.array(fac) Out[56]: array([1, 2, 1, 2, 2, 3], dtype=int32) 做到这一点,因为它已经分解并只包含1,2,3 ......等级,而不是原来的'a','b','c' ......再也没有了。

R

或者可以在In [51]: robjects.reval('result1 <- which(sv %in% c("a"))') print robjects.r.result1 [1] 1 3 方面完成:

R

要系统地将给定值分配到某个级别,建议您使用In [53]: robjects.r.assign('sv', sv) robjects.reval('result3 <- factor(sv, levels=c("a","b","c"), labels=c(10,2,3))') print robjects.r.result3 [1] 10 2 10 2 2 3 Levels: 10 2 3 中的factor函数:

a

因此10获得b2获得c3获得{{1}},依此类推。