从数据帧中提取特定对角线

时间:2018-03-27 15:43:17

标签: r database dataframe matrix

我试图从我的数据中得到一个特定的对角线。这是我的代码:

import * as firebase from "firebase"
import 'firebase/firestore'
import 'firebase-functions'

require('dotenv').config()


var config = {
    apiKey: process.env.REACT_APP_FIREBASE_API_KEY,
    storageBucket: process.env.REACT_APP_FIREBAES_STORAGE_BUCKET,
    databaseURL: process.env.REACT_APP_FIREBASE_DATABASE_URL,
    projectId: process.env.REACT_APP_FIREBASE_PROJECT_ID 
};

// Firebase is being initialized
let fb = firebase.initializeApp(config);
// Firestore is also working
let firestore = firebase.firestore()

// But when I tried to initiate functions it is failing
let functions = firebase.functions()

我们如何得到对角线65,90,55?

我已经使用了a2008=c(30,50,65) a2009=c(40,90,NA) a2010=c(55,NA,NA) mydata=rbind(a2008,a2009,a2010) mydata [,1] [,2] [,3] a2008 30 50 65 a2009 40 90 NA a2010 55 NA NA 函数,但我得到了diag

一些帮助将不胜感激

5 个答案:

答案 0 :(得分:2)

在调用curl -v -X POST -H 'Content-type: application/x-www-form-urlencoded' -d '@data.txt' '/echo/form' 之前,您可以通过翻转矩阵来获得对角线:

diag

执行diag(mydata[ , 3:1]) # [1] 65 90 55 会以相反的顺序索引矩阵的列。

答案 1 :(得分:2)

这是一个矩阵,而不是数据框。哪个好!数据框的对角线没有多大意义。我会这样做:

>>> fib(5)
5
>>> fib.call_count
30

您可以使用矩阵来索引矩阵,这就是说您需要第1,2,3行和第3列,第2列的值。

答案 2 :(得分:2)

您可以尝试通过

获得反对角线
diag(mydata[,nrow(mydata):1])
[1] 65 90 55

diag(as.matrix(rev(as.data.frame(mydata)))) 

答案 3 :(得分:2)

要获得主要的反对角线,你可以这样做。 (rev获得订单)

mydata[row(mydata) + col(mydata) == ncol(mydata) + 1]

您可以使用

获得低于该对角线的对角线
mydata[row(mydata) + col(mydata) == ncol(mydata) + 2]

等等

答案 4 :(得分:1)

您可以通过首先翻转矩阵并找到对角线来实现此目的。那是

diag(apply(mydata, 1, rev))

我希望这有帮助!