为什么我的数据是一个元组,如何更改这个以便我可以对数据进行排序

时间:2016-03-02 19:30:48

标签: python r rpy2

我正在使用rpy2在R中通过python进行一些统计分析。导入数据文件后,我想对数据进行排序,并在R中执行其他一些操作。一旦我导入数据并尝试对数据进行排序,我会收到以下错误消息:

TypeError: 'tuple' object cannot be interpreted as an index

我的代码的最后两行是我尝试对数据进行排序的地方,之前的几行是我导入数据的地方。

root = os.getcwd()
dirs = [os.path.abspath(name) for name in os.listdir(".") if os.path.isdir(name)]
for d in dirs:
    os.chdir(d)
    cwd = os.getcwd()
    files_to_analyze = (glob.glob("*.afa"))
    for f in files_to_analyze:
        afa_file = os.path.join(cwd + '/' + f)
        readfasta = robjects.r['read.fasta']
        mydatafasta = readfasta(afa_file)
        names = robjects.r['names']
        IDnames = names(mydatafasta)            
        substr = robjects.r['substr']
        ID = substr(IDnames, 1,8)
        #print ID
        readtable = robjects.r['read.table']
        gps_file = os.path.join(root + '/' + "GPS.txt")
        xy = readtable(gps_file, sep="\t")
        #print xy
        order = robjects.r['order']
        gps = xy[order(xy[:,2]),]

我不明白为什么我的数据是元组而不是我可以使用R进一步操作的数据帧。有没有办法将其转换为R可以使用的可行数据帧?

我的xy数据如下:

Species AB425882    35.62   -83.4
Species AB425905    35.66   -83.33
Species KC413768    37.35   127.03
Species AB425841    35.33   -82.82
Species JX402724    29.38   -82.2

我想使用R中的order函数在第二列按字母顺序对数据进行排序。

1 个答案:

答案 0 :(得分:0)

由于这个例子不足以重现你所拥有的东西,所以有很多猜测。

在下文中,如果xy是R数据框,您将需要使用专用于R样式子集的方法来执行R样式的子集化(see the doc):

# Note R indices are 1-based while Python indices are 0-based.
# When using R-style subsetting the indices are 1-based.
gps = xy.rx(order(xy.rx(True, 2)),
            True)