Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
r中rbind对象到数据帧的问题_R_Dataframe_Oop - Fatal编程技术网

r中rbind对象到数据帧的问题

r中rbind对象到数据帧的问题,r,dataframe,oop,R,Dataframe,Oop,我创建了一个表: RpgCharDF <- data.frame(Name = character(), Level = integer(), ClassChar = character(), Race = character(), HP = integer(),

我创建了一个表:

RpgCharDF <- data.frame(Name = character(),
                        Level = integer(),
                        ClassChar = character(),
                        Race = character(),
                        HP = integer(),
                        Attack = integer(),
                        Resist = integer())
DF中有NA值


我哪里做错了?那代码怎么了?我需要注意的是,元素Artur和Dawid都是正常创建的。当我在环境中单击时,两者都有一个填充的名称等。

使用rbindlist而不是rbind:

RpgCharDF <- data.frame(Name = character(),
                        Level = integer(),
                        rpgClass = character(),
                        Race = character(),
                        HP = integer(),
                        Attack = integer(),
                        Resist = integer())

RPGcharacter <- function(Name, Level, rpgClass, Race, HP, Attack, Resist){
  value <- list(Name= Name, Level = Level, rpgClass = rpgClass,Race=Race, HP = HP, Attack = Attack, Resist = Resist)
  attr(value, "class") <- "RPGcharacter"
  value
}

library(data.table)

Artur <- RPGcharacter("Artur", 22, "Warlock", "Dwarf", 130, 12, 3)
Dawid <- RPGcharacter("Dawid", 1, "Homeless", "Gnome", 20, 2, 1)

RpgCharDF <- rbindlist(list(RpgCharDF, Dawid, Artur), fill = T, use.names = T)
RpgCharDF

RpgCharDF使用rbindlist而不是rbind:

RpgCharDF <- data.frame(Name = character(),
                        Level = integer(),
                        rpgClass = character(),
                        Race = character(),
                        HP = integer(),
                        Attack = integer(),
                        Resist = integer())

RPGcharacter <- function(Name, Level, rpgClass, Race, HP, Attack, Resist){
  value <- list(Name= Name, Level = Level, rpgClass = rpgClass,Race=Race, HP = HP, Attack = Attack, Resist = Resist)
  attr(value, "class") <- "RPGcharacter"
  value
}

library(data.table)

Artur <- RPGcharacter("Artur", 22, "Warlock", "Dwarf", 130, 12, 3)
Dawid <- RPGcharacter("Dawid", 1, "Homeless", "Gnome", 20, 2, 1)

RpgCharDF <- rbindlist(list(RpgCharDF, Dawid, Artur), fill = T, use.names = T)
RpgCharDF

RpgCharDF当您调用
rbind
时,它将输出转换为
data.frame
。由于未指定字符串的处理方式,因此会将字符串转换为因子,因此,当您尝试添加第二行时,它会为字符列名称和攻击提供NA

您可以使用:

RpgCharDF <- rbind(RpgCharDF, Dawid, stringsAsFactors = FALSE)
RpgCharDF <- rbind(RpgCharDF, Artur, stringsAsFactors = FALSE)

RpgCharDF当您调用
rbind
时,它将输出转换为
data.frame
。由于未指定字符串的处理方式,因此会将字符串转换为因子,因此,当您尝试添加第二行时,它会为字符列名称和攻击提供NA

您可以使用:

RpgCharDF <- rbind(RpgCharDF, Dawid, stringsAsFactors = FALSE)
RpgCharDF <- rbind(RpgCharDF, Artur, stringsAsFactors = FALSE)

RpgCharDF您可以转换为
字符
类,并且应该是写得很好的问题。继续。你可以转换成
字符
类,并且应该是一个写得很好的问题。继续说下去。非常感谢你的解释!工作正常:)也许你知道为什么DF中的索引(行名)是2和21?不是1和2?嗯。。。这真的很奇怪。。。我不知道你为什么会得到这些行名,对不起。非常感谢你的解释!工作正常:)也许你知道为什么DF中的索引(行名)是2和21?不是1和2?嗯。。。这真的很奇怪。。。对不起,我不知道你为什么会得到这些行名。
    NAME  Level RPGClass   HP  ATTACK  RESIST
1   Dawid   1   Homeless    20    2      1
2   NA      22  NA         130   12      3
RpgCharDF <- data.frame(Name = character(),
                        Level = integer(),
                        rpgClass = character(),
                        Race = character(),
                        HP = integer(),
                        Attack = integer(),
                        Resist = integer())

RPGcharacter <- function(Name, Level, rpgClass, Race, HP, Attack, Resist){
  value <- list(Name= Name, Level = Level, rpgClass = rpgClass,Race=Race, HP = HP, Attack = Attack, Resist = Resist)
  attr(value, "class") <- "RPGcharacter"
  value
}

library(data.table)

Artur <- RPGcharacter("Artur", 22, "Warlock", "Dwarf", 130, 12, 3)
Dawid <- RPGcharacter("Dawid", 1, "Homeless", "Gnome", 20, 2, 1)

RpgCharDF <- rbindlist(list(RpgCharDF, Dawid, Artur), fill = T, use.names = T)
RpgCharDF
RpgCharDF <- rbind(RpgCharDF, Dawid, stringsAsFactors = FALSE)
RpgCharDF <- rbind(RpgCharDF, Artur, stringsAsFactors = FALSE)
RpgCharDF <- do.call(rbind, list(RpgCharDF, Dawid, Artur))