我知道我可以用其他方式做到这一点,但是我很好奇。
dfDice = sample(1:6, 10000, replace = TRUE) %>%
data.frame()
上面创建了一个data.frame,其中列标题称为“。”。
所以我的第一个问题是我可以将列标题发送到我的代码中吗?我尝试将其放在data.frame()函数中,但它只会创建一个新列。
第二个问题是,我可以将多个列通过管道传递到data.frame中,还是必须执行类似的操作?:
dfDice = (num = sample(1:6, 10000, replace = TRUE) %>%
data.frame(letters = sample(LETTERS, 10000, replace = TRUE))
再次,我知道这不是创建data.frame的最佳方法,我只是从学习的角度并试图完全理解管道技术而感到好奇。
答案 0 :(得分:2)
要分配名称,可以使用预定义的向量并使用setNames
library(dplyr)
cols <- "a"
sample(1:6, 10, replace = TRUE) %>%
data.frame() %>%
setNames(cols)
或者也可以在不事先知道列数的情况下动态命名。
sample(1:6, 10, replace = TRUE) %>%
data.frame() %>%
setNames(letters[seq_along(.)])
对于第二个问题,最简单的选择是
data.frame(a = sample(1:6, 10, replace = TRUE),
b = sample(LETTERS, 10, replace = TRUE))
或者如果您想使用管道系统?
sample(1:6, 10, replace = TRUE) %>%
data.frame() %>%
setNames(cols) %>%
bind_cols(b = sample(LETTERS, 10, replace = TRUE))
答案 1 :(得分:2)
所以我的第一个问题是我可以将列标题发送到我的代码中吗?一世 已经尝试将其放在我的data.frame()函数中,但它只是创建 一个新列。
对于单列,您有两个选择:
dfDice <- sample(1:6, 10000, replace = TRUE) %>%
data.frame() %>%
setNnames("num")
dfDice <- sample(1:6, 10000, replace = TRUE) %>%
data.frame(num = .)
第二个问题是,我可以将多列输入一个 data.frame?
sample(1:6, 5, replace = TRUE) %>%
cbind(sample(LETTERS, 5, replace = TRUE)) %>%
as.data.frame() %>%
setNames(c("num", "letters"))