R中的data.frame()中的参数用于停止自动更改列名

时间:2018-10-25 16:25:45

标签: r function

我在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

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

1 个答案:

答案 0 :(得分:3)

当您尝试使用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))