R 数据帧[,-1]和数据帧[-1]是否相同?
抱歉,这似乎是一个非常愚蠢的问题,但是R 数据帧[,-1]和数据帧[-1]是否相同?,r,dataframe,R,Dataframe,抱歉,这似乎是一个非常愚蠢的问题,但是dataframe[,-1]和dataframe[-1]是否相同,它是否适用于所有数据类型 为什么它们是相同的呢?dataframe[-1]将以向量形式处理数据,从而返回除第一个元素[[edit]]之外的所有元素,正如前面所指出的,它原来是一列,作为数据。frame是一个列表dataframe[,-1]将以矩阵形式处理数据,返回除第一列以外的所有数据。 [-1]使用data.frame是一个列表的事实,因此当您执行dataframe[-1]操作时,它会返回另
dataframe[,-1]
和dataframe[-1]
是否相同,它是否适用于所有数据类型
为什么它们是相同的呢?
dataframe[-1]
将以向量形式处理数据,从而返回除第一个元素[[edit]]之外的所有元素,正如前面所指出的,它原来是一列,作为数据。frame
是一个列表dataframe[,-1]
将以矩阵形式处理数据,返回除第一列以外的所有数据。
[-1]
使用data.frame是一个列表的事实,因此当您执行dataframe[-1]
操作时,它会返回另一个data.frame(list),但不包含第一个元素(即列)
[,-1]
使用data.frame是二维数组这一事实,因此当您执行dataframe[,-1]
操作时,会得到不包含第一列的子数组
从本质上讲,它们听起来是一样的,但是第二种情况在默认情况下也会尝试减少它返回的子数组的维数。因此,根据dataframe
的尺寸,您可能会得到data.frame或vector,例如,请参见:
> data <- data.frame(a = 1:2, b = 3:4)
> class(data[-1])
[1] "data.frame"
> class(data[, -1])
[1] "integer"
很抱歉,我想把它作为一个注释,但我觉得它太大了,我只是觉得有趣的是,唯一保留非整数的是dataframe[1]
根据卡尔的回答,数据帧[[1]]似乎也被视为矩阵。
但数据帧[1]不是
但不能将其视为矩阵,因为数据帧[[1]]和矩阵[[1]]的结果不同
D <- as.data.frame(matrix(1:16,4))
D
M <- (matrix(1:16,4))
M
> D[ ,1] # data frame leaving out first column
[1] 1 2 3 4
> D[[1]] # first column of dataframe
[1] 1 2 3 4
> D[1] # First column of dataframe
V1
1 1
2 2
3 3
4 4
>
> class(D[ ,1])
[1] "integer"
> class(D[[1]])
[1] "integer"
> class(D[1])
[1] "data.frame"
>
> M[ ,1] # matrix leaving out first column
[1] 1 2 3 4
> M[[1]] # First element of first row & col
[1] 1
> M[1] # First element of first row & col
[1] 1
>
> class(M[ ,1])
[1] "integer"
> class(M[[1]])
[1] "integer"
> class(M[1])
[1] "integer"
dd[[1]#数据帧的第一列
[1] 1 2 3 4
>D[1]#数据帧的第一列
V1
1 1
2 2
3 3
4 4
>
>类别(D[,1])
[1] “整数”
>类别(D[[1]])
[1] “整数”
>类别(D[1])
[1] “数据帧”
>
>M[,1]#不包括第一列的矩阵
[1] 1 2 3 4
>M[[1]#第一行和列的第一个元素
[1] 1
>M[1]#第一行和列的第一个元素
[1] 1
>
>类别(M[,1])
[1] “整数”
>类别(M[[1]])
[1] “整数”
>类别(M[1])
[1] “整数”
您需要删除“否”。数据帧是一个向量,但不是一个原子向量。它的第一个元素是第一列。data.frame的每个列表元素都是一列,我不认为他说了什么错话。除了下面的答案外,这个主题在Advanced R:,你的答案也在那里。很抱歉回答不好-我没有想到data.frame。意味着culpa@CarlWitthoft我们都原谅你!:-)我想举一个情节的例子,但我想问问。您使用的绘图是否会受到影响。也就是说,如果您尚未转换回数据帧,则不太可能,但您可以向我们展示如何使用绘图来确认。也请使用dim(数据帧)
。谢谢大家@弗洛德尔,我会继续努力解决我的情节问题。Hadley创建tibbles的原因之一是:无论大小,无论哪种情况,结果都是一个tibble。
D <- as.data.frame(matrix(1:16,4))
D
M <- (matrix(1:16,4))
M
> D[ ,1] # data frame leaving out first column
[1] 1 2 3 4
> D[[1]] # first column of dataframe
[1] 1 2 3 4
> D[1] # First column of dataframe
V1
1 1
2 2
3 3
4 4
>
> class(D[ ,1])
[1] "integer"
> class(D[[1]])
[1] "integer"
> class(D[1])
[1] "data.frame"
>
> M[ ,1] # matrix leaving out first column
[1] 1 2 3 4
> M[[1]] # First element of first row & col
[1] 1
> M[1] # First element of first row & col
[1] 1
>
> class(M[ ,1])
[1] "integer"
> class(M[[1]])
[1] "integer"
> class(M[1])
[1] "integer"