我正在使用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
函数在第二列按字母顺序对数据进行排序。
答案 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)