首页 > 解决方案 > R 中 data.frame() 中用于停止自动更改列名的参数

问题描述

我在 R 中有一个数据集,我试图将其子集到第二个数据框中。

我不确定它是否相关,但以防万一,数据大致如下:

V1 V2 V3 V4 V5 V6
ab 10 98 0.9 0.1 abc
cd 11 99 0.8 0.05 cde

所以我试图通过执行以下操作对其进行子集化:

df_new = data.frame(data$V2, data$V5, data$V6)

这实际上在过去有效,所以我没有想到在这里使用它,但由于某种原因,它的输出是:

data.V2 data.V5 data.V6
10      0.1     abc
11      0.05    cde

因此,由于某种原因,当我对它进行子集化时,该函数将原始数据框的名称添加到列名中。我检查了文档,看不到阻止这种情况的选项(我只想保留原始名称)。所以我不确定这里到底出了什么问题。

标签: rfunction

解决方案


当您尝试使用时,例如,data$V2那是没有名字的东西:

data$V2
# [1] 10 11

因此,这种行为是意料之中的。最好的选择可能是

data[, c("V2", "V5", "V6")]
#   V2   V5  V6
# 1 10 0.10 abc
# 2 11 0.05 cde

或者,如果你想坚持下去data.frame

with(data, data.frame(V2, V5, V6))
#   V2   V5  V6
# 1 10 0.10 abc
# 2 11 0.05 cde

更长但有可能分配任何名称的东西是

data.frame(A = data$V2, B = data$V5, C = data$V6)
#    A    B   C
# 1 10 0.10 abc
# 2 11 0.05 cde

或者

with(data, data.frame(A = V2, B = V5, C = V6))

推荐阅读