R中的数据框中可以选择多少列?

时间:2018-08-08 22:29:35

标签: r

我想从数据框中选择3117列, 我试图通过列名选择它们:

dataframe %>% 
  select(
    'AAACCTGAGCACGCCT-1',
    'AAACCTGAGCGCTTAT-1',
    'AAACCTGAGCGTTGCC-1',
    ......,
    'TTGGAACCACGGACAA-1'
  )

firstpickupnames <- ('AAACCTGAGCACGCCT-1','AAACCTGAGCGCTTAT-1','AAACCTGAGCGTTGCC-1',......,'TTGGAACCACGGACAA-1')

R控制台刚刚答复的两种方式

'AAACCTGAGCACGCCT-1','AAACCTGAGCGCTTAT-1','AAACCTGAGCGTTGCC-
1',......,'TTGGAACCACGGACAA-1'
+ )
+

这是什么意思?我可以在R中选择的列是否有限制?

2 个答案:

答案 0 :(得分:4)

没有可重复的示例,很难确切地知道您要寻找的是什么,但是dplyr::select()有几个选择列的选项,而dplyr::everything()可能就是您要寻找的东西:

library(dplyr)

# this reorders the column names, but keeps everything without having to name the columns specifically:
mtcars %>% 
  select(carb, gear, everything()) 

# from a list of column names:
keep_columns <- c('cyl','disp','hp')
mtcars %>% 
  select(one_of(keep_columns)) 

# specific names, and a range of names:
mtcars %>% 
  select(hp, qsec:gear) 

#You could also use  `contains()`, `starts_with()`, `ends_with()`, or `matches()`. Note that calling all of the following at once will give you no results:
mtcars %>% 
  select(contains('t')) %>%
  select(starts_with('a')) %>% 
  select(ends_with('b')) %>% 
  select(matches('^m.+g$')) 

答案 1 :(得分:2)

控制台的回复方式(+表示它正在等待表达式的其余部分)强烈表明您在控制台处理长命令的能力方面遇到了限制(试图通过从剪贴板粘贴进行组装),而不是可以选择的列数的固有限制。我在文档中唯一可以找到此限制的地方是here,上面写着“在控制台输入的命令行限制为大约4095字节。”

在注释中,您说要选择的列名称在csv文件中。您没有过多讲过csv文件的结构,但是说您有一个csv文件,其中包含一个列名列表。例如,我创建了一个名为"colnames.csv"的文件,该文件只有一行:

Sepal.Width, Petal.Length

请注意,无需在文本文件中的列名周围手动放置引号。然后在R控制台中输入:

iris %>% select(one_of(as.character(read.csv("colnames.csv",header = FALSE, strip.white = TRUE,stringsAsFactors = FALSE))))

按预期工作。即使此示例仅使用2列,也没有理由失败3000+,因为本身的列数与您的工作无关。

如果csv文件的结构与示例不同,则需要调整对read.csv的调用,也许还需要将其转换为字符向量的方式进行调整,但是您应该能够对此进行调整处理您的情况。

相关问题