Creating/Populating R 中的空数据帧
Creating/Populating Empty Data Frames in R
我正在使用 R。我在此处 link 找到关于在 R 中创建空数据框的内容:Create an empty data.frame .
我试过做类似的事情:
df <- data.frame(Date=as.Date(character()),
country=factor(),
total=numeric(),
stringsAsFactors=FALSE)
然而,当我尝试填充它时:
df$total = 7
我收到以下错误:
Error in `$<-.data.frame`(`*tmp*`, total, value = 7) :
replacement has 1 row, data has 0
df[1, "total"] <- rnorm(100,100,100)
Error in `[<-.data.frame`(`*tmp*`, 1, "total", value = c(-79.4584309347689, :
replacement has 100 rows, data has 1
有谁知道如何解决这个错误?
谢谢
一个选项是指定行索引
df[1, "total"] <- 7
-输出
str(df)
#'data.frame': 1 obs. of 3 variables:
# $ Date : Date, format: NA
# $ country: Factor w/ 0 levels: NA
# $ total : num 7
问题是,当我们 select 单个列并分配给 0 行数据集时,它不会自动扩展其他列的行。通过指定行索引,其他列会自动填充默认NA
关于第二个问题(已更新),一个标准的data.frame列是一个vector
,vector
的length
应该和我们索引的一样正在指定。假设,我们要扩展到 100 行,相应地更改索引
df[1:100, "total"] <- rnorm(100, 100, 100) # length is 100 here
dim(df)
#[1] 100 3
或者如果我们需要将所有内容都塞进一行,则将 rnorm
包裹在 list
中
df[1, "total"] <- list(rnorm(100, 100, 100))
简而言之,lhs
的长度应与 rhs
的长度相同。另一种情况是当我们从不同的数据集
分配时
df[seq_along(aa$bb), "total"] <- aa$bb
这也可以在没有初始化的情况下完成,即
df <- data.frame(total = aa$bb)
我正在使用 R。我在此处 link 找到关于在 R 中创建空数据框的内容:Create an empty data.frame .
我试过做类似的事情:
df <- data.frame(Date=as.Date(character()),
country=factor(),
total=numeric(),
stringsAsFactors=FALSE)
然而,当我尝试填充它时:
df$total = 7
我收到以下错误:
Error in `$<-.data.frame`(`*tmp*`, total, value = 7) :
replacement has 1 row, data has 0
df[1, "total"] <- rnorm(100,100,100)
Error in `[<-.data.frame`(`*tmp*`, 1, "total", value = c(-79.4584309347689, :
replacement has 100 rows, data has 1
有谁知道如何解决这个错误?
谢谢
一个选项是指定行索引
df[1, "total"] <- 7
-输出
str(df)
#'data.frame': 1 obs. of 3 variables:
# $ Date : Date, format: NA
# $ country: Factor w/ 0 levels: NA
# $ total : num 7
问题是,当我们 select 单个列并分配给 0 行数据集时,它不会自动扩展其他列的行。通过指定行索引,其他列会自动填充默认NA
关于第二个问题(已更新),一个标准的data.frame列是一个vector
,vector
的length
应该和我们索引的一样正在指定。假设,我们要扩展到 100 行,相应地更改索引
df[1:100, "total"] <- rnorm(100, 100, 100) # length is 100 here
dim(df)
#[1] 100 3
或者如果我们需要将所有内容都塞进一行,则将 rnorm
包裹在 list
df[1, "total"] <- list(rnorm(100, 100, 100))
简而言之,lhs
的长度应与 rhs
的长度相同。另一种情况是当我们从不同的数据集
df[seq_along(aa$bb), "total"] <- aa$bb
这也可以在没有初始化的情况下完成,即
df <- data.frame(total = aa$bb)