【发布时间】:2018-09-09 19:58:58
【问题描述】:
对于具有一列作为硫酸盐的数据框(数据),
data[["sulfate"]] 和 data[[colnames(data)=="sulfate"]] 有什么区别?
data["sulfate'] 和 data[colnames(data)=="sulfate"] 产生相同的值结果并具有数据框类,但在我的情况下 data[["sulfate"]] 结果为数字向量,但 data[[colnames(data)=="sulfate"]] 原来是一个错误。为什么?
【问题讨论】:
-
后者是错误的。
-
这是一个错误,但是 data["sulfate"] 和 data[colnames(data)=="sulfate"] 给出了具有相似值的数据框的相同输出,但是当我们尝试将其转换为数字时vector 使用 [[colnames(data)="sulfate"]] 结果是错误的。为什么?
-
[[ 的索引参数必须是标量,而不是逻辑向量。
-
@G.Grothendieck
[[接受向量,我认为这不是这种情况下的问题。问题是第一个 FALSE 变成数字 0 并且错误是“尝试选择少于一个元素”。 -
@Karolis,不。如果对象参数是嵌套列表,它只接受向量。例如,
list(1, list(2, 3))[[c(2, 1)]]有效。