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))