"选择了未定义的列" - 尝试重新排序列时R中出错

时间:2017-07-18 19:41:57

标签: r undefined multiple-columns selected

我在R遇到问题,希望有人可以帮助我。

我有一个400行的数据帧和2448列。我只是想用列的新顺序创建一个新的数据帧,所以我编写了以下脚本:

Daten_ausgewaehlt_weniger_sort <- Daten_ausgewaehlt_weniger[,c("id", "p_sex", "p_age", "p_single", "p_mothertongue", "p_mothertongue_other", 
"p_courseofstudies_yes_no", "p_courseofstudies", "p_occupation")]

(不同的是,在我的真实剧本中,我在c-vector中拥有所有2448列,而不仅仅是这里显示的9列。)

当我尝试运行时,我收到以下错误消息:

  

[.data.frame中的错误(Daten_ausgewaehlt_weniger,c(&#34; id&#34;,&#34; p_sex&#34;,   :选择了未定义的列

我用这个函数搜索了错误拼写的列名:

setdiff(names(Daten_ausgewaehlt_weniger), c("id", "p_sex", "p_age", "p_single", "p_mothertongue", "p_mothertongue_other", 
"p_courseofstudies_yes_no", "p_courseofstudies", "p_occupation"))

首先我发现了一个错误的列名,但我更正了它,现在setdiff说&#34;字符(0)&#34;。因此,所有列名都应该正确定义。但是,我仍然会选择#34;未定义的列&#34;。

我不知道错误是什么。我认为这是一件非常容易的事,但我找不到解决办法。 如果有人可以帮助我,或者有我能尝试的想法,我会很高兴。

提前致谢(对不起我的英语)!

1 个答案:

答案 0 :(得分:0)

这可能对您有所帮助:

        Library(data.table)
   #1  make the df to datatable format 
       setDT(Daten_ausgewaehlt_weniger)

   #2
        Daten_ausgewaehlt_weniger_sort <- Daten_ausgewaehlt_weniger[, c("id", "p_sex", "p_age", "p_single", "p_mothertongue", "p_mothertongue_other", 
            "p_courseofstudies_yes_no", "p_courseofstudies", "p_occupation")] 

   # alternative way and probably easier way would be just to go based on the number of columns name order 
        Daten_ausgewaehlt_weniger_sort <- Daten_ausgewaehlt_weniger[, c(3, 5, 1, 14:19)]# basically you reorder the column names based on their order place number in your original file ,i.e. Daten_ausgewaehlt_weniger

   #3 you can also use setcolorder()
      setcolorder(Daten_ausgewaehlt_weniger, c(3, 5, 1, 14:19)) 

   # one way to get the real order of your column names would be:
       as.list(names(Daten_ausgewaehlt_weniger))# you will get the list of the col names with their corresponding col number