使用 tibble 创建数据框时无法引用向量
Cannot reference to a vector when creating a data frame using tibble
我想创建一个两列数据框。第一列仅包含一个字母,而第二列包含多个字母。第二列中的内容存储在一个向量中。我尝试使用 tibble
包中的 tibble
函数,但它给了我奇怪的结果。第二列与第一列相同。
library(tibble)
vec <- c("A", "B", "C")
tibble(
vec = rep(vec[1], length(vec)),
vec_new = vec
)
# # A tibble: 3 x 2
# vec vec_new
# <chr> <chr>
# 1 A A
# 2 A A
# 3 A A
我尝试使用 data.table
包中的 data.frame
和 data.table
函数创建相同的数据框。结果如预期。请告诉我为什么 tibble
会产生奇怪的结果,以及解决它的最佳方法是什么。
data.frame(
vec = rep(vec[1], length(vec)),
vec_new = vec
)
# vec vec_new
# 1 A A
# 2 A B
# 3 A C
library(data.table)
data.table(
vec = rep(vec[1], length(vec)),
vec_new = vec
)
# vec vec_new
# 1: A A
# 2: A B
# 3: A C
您可以使用 'bang bang' 符号来引用您的 tibble 之外的对象,以防止 'issue' @Gregor Thomas 在您的 post.[=11= 的评论中提到]
library(tibble)
tibble(vec = rep(vec[1], length(vec)),
vec_new = !!vec)
# A tibble: 3 x 2
vec vec_new
<chr> <chr>
1 A A
2 A B
3 A C
有一个.env
参数可以使用
library(tibble)
tibble(
vec = rep(vec[1], length(vec)),
vec_new = .env$vec
)
# A tibble: 3 × 2
vec vec_new
<chr> <chr>
1 A A
2 A B
3 A C
我想创建一个两列数据框。第一列仅包含一个字母,而第二列包含多个字母。第二列中的内容存储在一个向量中。我尝试使用 tibble
包中的 tibble
函数,但它给了我奇怪的结果。第二列与第一列相同。
library(tibble)
vec <- c("A", "B", "C")
tibble(
vec = rep(vec[1], length(vec)),
vec_new = vec
)
# # A tibble: 3 x 2
# vec vec_new
# <chr> <chr>
# 1 A A
# 2 A A
# 3 A A
我尝试使用 data.table
包中的 data.frame
和 data.table
函数创建相同的数据框。结果如预期。请告诉我为什么 tibble
会产生奇怪的结果,以及解决它的最佳方法是什么。
data.frame(
vec = rep(vec[1], length(vec)),
vec_new = vec
)
# vec vec_new
# 1 A A
# 2 A B
# 3 A C
library(data.table)
data.table(
vec = rep(vec[1], length(vec)),
vec_new = vec
)
# vec vec_new
# 1: A A
# 2: A B
# 3: A C
您可以使用 'bang bang' 符号来引用您的 tibble 之外的对象,以防止 'issue' @Gregor Thomas 在您的 post.[=11= 的评论中提到]
library(tibble)
tibble(vec = rep(vec[1], length(vec)),
vec_new = !!vec)
# A tibble: 3 x 2
vec vec_new
<chr> <chr>
1 A A
2 A B
3 A C
有一个.env
参数可以使用
library(tibble)
tibble(
vec = rep(vec[1], length(vec)),
vec_new = .env$vec
)
# A tibble: 3 × 2
vec vec_new
<chr> <chr>
1 A A
2 A B
3 A C