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