R 如何将行添加到数据帧?

R 如何将行添加到数据帧?,r,dataframe,rbind,R,Dataframe,Rbind,我尝试了很多不同的方法,但我不知道如何在这个表中添加一行 means <- data.frame("State" = character(0), "Mean" = numeric(0)) 您正在尝试添加一个向量,并使用数据帧对其进行rbind。你最好rbindadata.frame到data.frame 因此,在您的情况下,最好: for(唯一状态(数据$state)){ 意味着您可以使用提供更直观可读性的较新库dplyr、tidyr和purrr编写代码。代码仍然很短: map_df

我尝试了很多不同的方法,但我不知道如何在这个表中添加一行

  means <- data.frame("State" = character(0), "Mean" = numeric(0))

您正在尝试添加一个向量,并使用数据帧对其进行
rbind
。你最好
rbind
a
data.frame
data.frame

因此,在您的情况下,最好:

for(唯一状态(数据$state)){

意味着您可以使用提供更直观可读性的较新库dplyr、tidyr和purrr编写代码。代码仍然很短:

map_df(states, function(state) { means %>% add_row(State = state, Mean = 4)})
(对我来说)令人惊讶的是,尽管dplyr-tidyr::add_行的开销比rbind快23倍,比许多其他行快:

df=data.frame(x=numeric(),y=character())
系统时间(
对于(1:100000中的i){
df%add_行(x=x,y=toString(x))})
)
用户系统运行时间
78.951   0.337  79.555

什么是
数据$State
?它是一个因素吗?如果是,那么
数据$State
中的一个级别是
数据$State
?对原始postSo进行了编辑。那么,是否要创建一个包含50行(每个状态一行)的数据框,其中每行都是
数据。frame(State=“State”,“Mean”=4)
?正确:)(我认为在我的数据集中只有大约47行,所以如果有一种方法可以创建一个可以附加()的表,我宁愿这样做)
44: In `[<-.factor`(`*tmp*`, ri, value = structure(c(1L, NA,  ... :
  invalid factor level, NA generated
45: In `[<-.factor`(`*tmp*`, ri, value = structure(c(1L, NA,  ... :
  invalid factor level, NA generated
[1] "Arizona"
[1] "California"
[1] "Colorado"
[1] "District Of Columbia"
[1] "Florida"
[1] "Illinois"
[1] "Indiana"
[1] "Kansas"
[1] "Kentucky"
[1] "Louisiana"
[1] "Michigan"
[1] "Missouri"
[1] "New Jersey"
[1] "New York"
[1] "North Carolina"
[1] "Oklahoma"
[1] "Pennsylvania"
[1] "Texas"
[1] "Virginia"
[1] "Massachusetts"
[1] "Nevada"
[1] "New Hampshire"
[1] "Tennessee"
[1] "South Carolina"
[1] "Connecticut"
[1] "Iowa"
[1] "Maine"
[1] "Maryland"
[1] "Wisconsin"
[1] "Country Of Mexico"
[1] "Arkansas"
[1] "Oregon"
[1] "Wyoming"
[1] "North Dakota"
[1] "Idaho"
[1] "Ohio"
[1] "Georgia"
[1] "Delaware"
[1] "Hawaii"
[1] "Minnesota"
[1] "New Mexico"
[1] "Rhode Island"
[1] "South Dakota"
[1] "Utah"
[1] "Alabama"
[1] "Washington"
[1] "Alaska"
map_df(states, function(state) { means %>% add_row(State = state, Mean = 4)})
df = data.frame(x = numeric(), y = character())

system.time(
  for (i in 1:100000) {
    df <- rbind(df, data.frame(x = i, y = toString(i)))
  }  
)
    user   system  elapsed 
1466.087  355.579 1827.724


system.time(
  map_df(1:100000, function(x) { df %>% add_row(x = x, y = toString(x)) })
)
   user  system elapsed 
 78.951   0.337  79.555