在 R 中的 data.frame 中插入一行
Inserting a row into a data.frame in R
我已经引用了这个问题 Insert a row in a data.table 但是,我收到了这个错误:
Warning message:
In `[<-.factor`(`*tmp*`, ri, value = "All") :
invalid factor level, NA generated
当我尝试插入一个仅包含值 "All"
的新行时,如下所示:
d <- copy(as.data.frame(Orange))
d <- rbind(d, c("All", "All", "All"))
它发出警告并在最后两列中插入 "All"
,在第一列中插入 NA
。
我哪里做错了,我知道这个应该很简单。
尝试将 c("all", "all", "all")
更改为 list("all", "all", "all")
。向量(由 c()
创建)在数据框中创建列。你可以做 list 或者做你想做的事情 rbind
data.frame
(因为 data.frames 只是特殊列表)。
根据 this,rbind
参数必须是数据框或可以强制转换为数据框的对象。它不能将 c("All","All","All")
强制转换为数据框。我只想创建一个新的数据框:d <- rbind(d, data.frame(...))
。您可能还会遇到一些数据类型不匹配的情况。
这是我可以无误地运行它的唯一方法。不过,我认为有更好的方法可以做到这一点。
d <- copy(as.data.frame(Orange))
add <- data.frame("All", "All", "All")
names(add) <- names(d)
d <- rbind(d, add)
另一种方法是,您可以将数据框的行数加 1,然后根据需要手动插入您的值。这不是最简洁的方式,但您可以混合和匹配数据类型。
# Get the next row number
row_number <- nrow(df)+1
# Add a new row to a dataframe. You can refer to columns by name
# or by column number.
df[row_number,"today"] <- lubridate::today()
df[row_number,"column_2"] <- "My value"
df[row_number,3] <- "My next value"
df[row_number,4] <- "My third value"
我已经引用了这个问题 Insert a row in a data.table 但是,我收到了这个错误:
Warning message:
In `[<-.factor`(`*tmp*`, ri, value = "All") :
invalid factor level, NA generated
当我尝试插入一个仅包含值 "All"
的新行时,如下所示:
d <- copy(as.data.frame(Orange))
d <- rbind(d, c("All", "All", "All"))
它发出警告并在最后两列中插入 "All"
,在第一列中插入 NA
。
我哪里做错了,我知道这个应该很简单。
尝试将 c("all", "all", "all")
更改为 list("all", "all", "all")
。向量(由 c()
创建)在数据框中创建列。你可以做 list 或者做你想做的事情 rbind
data.frame
(因为 data.frames 只是特殊列表)。
根据 this,rbind
参数必须是数据框或可以强制转换为数据框的对象。它不能将 c("All","All","All")
强制转换为数据框。我只想创建一个新的数据框:d <- rbind(d, data.frame(...))
。您可能还会遇到一些数据类型不匹配的情况。
这是我可以无误地运行它的唯一方法。不过,我认为有更好的方法可以做到这一点。
d <- copy(as.data.frame(Orange))
add <- data.frame("All", "All", "All")
names(add) <- names(d)
d <- rbind(d, add)
另一种方法是,您可以将数据框的行数加 1,然后根据需要手动插入您的值。这不是最简洁的方式,但您可以混合和匹配数据类型。
# Get the next row number
row_number <- nrow(df)+1
# Add a new row to a dataframe. You can refer to columns by name
# or by column number.
df[row_number,"today"] <- lubridate::today()
df[row_number,"column_2"] <- "My value"
df[row_number,3] <- "My next value"
df[row_number,4] <- "My third value"