【发布时间】:2025-12-20 04:45:16
【问题描述】:
没有那么多“你怎么……?”但更多的是“你怎么……?”
如果您有一个有人给您的文件,其中包含 200 列,并且您希望将其减少到分析所需的少数几列,您将如何处理?一种解决方案是否比另一种解决方案更有优势?
假设我们有一个包含 col1、col2 到 col200 列的数据框。如果您只想要 1-100,然后是 125-135 和 150-200,您可以:
dat$col101 <- NULL
dat$col102 <- NULL # etc
或
dat <- dat[,c("col1","col2",...)]
或
dat <- dat[,c(1:100,125:135,...)] # shortest probably but I don't like this
或
dat <- dat[,!names(dat) %in% c("dat101","dat102",...)]
我还缺少什么?我知道这显然是主观的,但这是你可能会潜入并开始以一种方式做事并在有更有效的方法时养成习惯的那些细节之一。很像这个关于which 的问题。
编辑:
或者,有没有一种简单的方法来创建一个可行的列名向量? name(dat) 不会在它们之间用逗号打印它们,这是您在上面的代码示例中需要的,所以如果您以这种方式打印出名称,那么您到处都有空格并且必须手动输入逗号......命令将为您提供 "col1","col2","col3",... 作为输出,以便您轻松获取所需内容?
【问题讨论】:
-
第 6000 个 [r] 问题。
-
顺便说一句,您的问题的标题是 data.frame 中的“行”,但它询问文件中的列。编辑标题可能是个好主意。 :)
-
请注意类似列表的问题;他们倾向于引出 i) 仅列出选项和 ii) 意见的答案,并且难以正确回答 - “您使用什么?”没有公认的答案;每个答案都是正确的。
-
@nzcoops 关于您的编辑子问题:
cat(shQuote(names(iris)), sep=", "),因此将其包装到函数中并使用它;)