我想从数据框中选择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中选择的列是否有限制?
答案 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
的调用,也许还需要将其转换为字符向量的方式进行调整,但是您应该能够对此进行调整处理您的情况。