R - 将数据帧转换为矩阵,使用 head() 时得到不同的结果
R - converting data frame to matrix, get different results when using head()
我有一个大约有 78,000 行的数据框,如下所示:
EmailAddress Column1 Column2 Column3
abc1@gmail.com 1 0 0
abc2@gmail.com 0 0 0
abc3@gmail.com 1 1 0
abc4@gmail.com 1 1 0
我想 运行 使用 kcca()
函数对其进行 kmeans 聚类。
我想将此数据框转换为矩阵,但我想保留列 EmailAddress 以便我可以 link 输出到原始数据。
我 运行 as.matrix()
函数如下,当我 运行 str()
命令时,我似乎得到了不同的结果。
第一次在整个数据框中输入 运行,如您所见,我得到了第一个元素,它应该是列名为 NULL,第二个元素,它应该是数据 1 或0,作为电子邮件地址。
第二次我 运行 它,我使用 head()
函数,要求前 100,000 个,现在我得到了我正在寻找的矩阵。
为什么会这样?
> y <- as.matrix(clicked_data[,1:24])
> str(y)
chr [1:78748, 1:24] "abc1@gmail.com" "abc2@gmail.com" "abc3@msn.com" ...
- attr(*, "dimnames")=List of 2
..$ : NULL
..$ : chr [1:24] "EmailAddress" "Column1" "column2" "Column3" ...
> y <- as.matrix(head(clicked_data[,1:24],100000))
> str(y)
chr [1:10000, 1:24] "abc1@gmail.com" "abc2@gmail.com" "abc3@msn.com" ...
- attr(*, "dimnames")=List of 2
..$ : chr [1:78748] "1" "2" "3" "4" ...
..$ : chr [1:24] "EmailAddress" "Column1" "column2" "Column3" ...
第一种情况NULL
是因为矩阵的行没有命名。另一方面,head()
似乎将行名称放在 dimnames
.
中
输出说明了这一点。
df <- read.table(head = T, text = "EmailAddress Column1 Column2 Column3
abc1@gmail.com 1 0 0
abc2@gmail.com 0 0 0
abc3@gmail.com 1 1 0
abc4@gmail.com 1 1 0")
mat <- as.matrix(df)
# EmailAddress Column1 Column2 Column3
#[1,] "abc1@gmail.com" "1" "0" "0"
#[2,] "abc2@gmail.com" "0" "0" "0"
#[3,] "abc3@gmail.com" "1" "1" "0"
#[4,] "abc4@gmail.com" "1" "1" "0"
mat1 <- as.matrix(head(df, 2))
# EmailAddress Column1 Column2 Column3
#1 "abc1@gmail.com" "1" "0" "0"
#2 "abc2@gmail.com" "0" "0" "0"
我有一个大约有 78,000 行的数据框,如下所示:
EmailAddress Column1 Column2 Column3
abc1@gmail.com 1 0 0
abc2@gmail.com 0 0 0
abc3@gmail.com 1 1 0
abc4@gmail.com 1 1 0
我想 运行 使用 kcca()
函数对其进行 kmeans 聚类。
我想将此数据框转换为矩阵,但我想保留列 EmailAddress 以便我可以 link 输出到原始数据。
我 运行 as.matrix()
函数如下,当我 运行 str()
命令时,我似乎得到了不同的结果。
第一次在整个数据框中输入 运行,如您所见,我得到了第一个元素,它应该是列名为 NULL,第二个元素,它应该是数据 1 或0,作为电子邮件地址。
第二次我 运行 它,我使用 head()
函数,要求前 100,000 个,现在我得到了我正在寻找的矩阵。
为什么会这样?
> y <- as.matrix(clicked_data[,1:24])
> str(y)
chr [1:78748, 1:24] "abc1@gmail.com" "abc2@gmail.com" "abc3@msn.com" ...
- attr(*, "dimnames")=List of 2
..$ : NULL
..$ : chr [1:24] "EmailAddress" "Column1" "column2" "Column3" ...
> y <- as.matrix(head(clicked_data[,1:24],100000))
> str(y)
chr [1:10000, 1:24] "abc1@gmail.com" "abc2@gmail.com" "abc3@msn.com" ...
- attr(*, "dimnames")=List of 2
..$ : chr [1:78748] "1" "2" "3" "4" ...
..$ : chr [1:24] "EmailAddress" "Column1" "column2" "Column3" ...
第一种情况NULL
是因为矩阵的行没有命名。另一方面,head()
似乎将行名称放在 dimnames
.
输出说明了这一点。
df <- read.table(head = T, text = "EmailAddress Column1 Column2 Column3
abc1@gmail.com 1 0 0
abc2@gmail.com 0 0 0
abc3@gmail.com 1 1 0
abc4@gmail.com 1 1 0")
mat <- as.matrix(df)
# EmailAddress Column1 Column2 Column3
#[1,] "abc1@gmail.com" "1" "0" "0"
#[2,] "abc2@gmail.com" "0" "0" "0"
#[3,] "abc3@gmail.com" "1" "1" "0"
#[4,] "abc4@gmail.com" "1" "1" "0"
mat1 <- as.matrix(head(df, 2))
# EmailAddress Column1 Column2 Column3
#1 "abc1@gmail.com" "1" "0" "0"
#2 "abc2@gmail.com" "0" "0" "0"