我的问题是如何在将字符的顺序强加给数据框的同时,基于字符向量重命名列名。我已经阅读了所有类似的帖子,但未回答我的问题。
我正在处理这样的数据框:
df<- data.frame(q3= c(1,4,6,1), q12=c(5,3,2,4), q11=c(1,2,3,4), q1=c(5,6,4,5),q5= c(1,4,6,1), q9=c(5,3,2,4), q10=c(1,2,3,4), q4=c(5,6,4,5),q2= c(1,4,6,1), q7=c(5,3,2,4), q6=c(1,2,3,4), q8=c(5,6,4,5))
理想情况下,我想基于它们的索引(即q1,q3,q78,q99)对这些列进行排序。但是,这似乎很困难。
幸运的是,我还有一个向量,其中包含按顺序排列的列名:
cols<- c("q1", "q2", "q3", "q4","q5", "q6", "q7", "q8","q9", "q10", "q11", "q12")
用cols
替换数据框列名显然是不正确的,因为它们的顺序不同。所以到目前为止我到达的地方是:
colnames(df) <- match(colnames(df), cols)
df <- df[,order(names(df))]
将colnames(df)
替换为在col中发现DependencyProperty
的位置,但是显然我无法对这些数字进行排序,因为它们不会被R视为整数(由于R不允许数字成为变量名称)。如果可以,则df与cols的顺序相同,而我将替换列名。
我该如何进行这项工作?如果不可能的话,还有什么替代方法?
谢谢。
答案 0 :(得分:1)
我们可以使用import React, {Component} from 'react';
import logo from './logo.svg';
import './App.css';
import getWeb3 from './utils/getweb3';
import CrowdFundingContract from './contracts/CrowdFunding.json';
class App extends Component {
state = {web3: null, accounts: null, contracts: null};
componentDidMount = async () => {
try{
const web3 = await getWeb3();
const accounts = await web3.eth.getAccounts();
const networkId = await web3.eth.net.getId();
const deployedNetwork = CrowdFundingContract.networks[networkId];
const instance = new web3.eth.Contract(CrowdFundingContract.abi, deployedNetwork && deployedNetwork.address);
this.setState({web3, accounts, contract: instance}, this.runExample);
}
catch(error){
alert('Failed to load web3, accounts and contract, check the console');
console.error(error);
}
};
}
对数据框中的列进行重新排序:
cols
这基本上使用df[,cols]
的顺序来重新排序我们的数据框。可以看到如下:
cols
如果我们有一个名为df[,c("B","A")]
df[,c("A","B")]
的向量并将其设置为cols
或c("A","B")
,则可以使用此“技巧”来帮助我们对列进行重新排序。