我是R的新手,我不知道如何在数据框中添加行.我添加了两个向量:
b=c("one","lala",1)
d=c("two","lele",2)
Run Code Online (Sandbox Code Playgroud)
我想将它添加到data.frame中,称为a.
a<-rbind(a,b)
Run Code Online (Sandbox Code Playgroud)
现在我有一个正确的行
A B C
1 one lala 1
Run Code Online (Sandbox Code Playgroud)
接下来我补充道
a<-rbind(a,d)
Run Code Online (Sandbox Code Playgroud)
结果是:
A B C
1 one lala 1
2 NA NA NA
Run Code Online (Sandbox Code Playgroud)
和控制台写我警告消息:无效因子级别,NA生成.我做错了什么或者更简单的方法来添加新行.但我不想在开始时创建完整的data.frame.我想添加线条.
Ern*_*t A 11
当你这样做
c("one","lala",1)
Run Code Online (Sandbox Code Playgroud)
这会创建一个字符串向量.将1被转换为字符类型,使得在所述载体的所有元素具有相同的类型.
然后rbind(a,b)将尝试组合a哪个是数据框,b
哪个是字符向量,这不是你想要的.
这样做的方法是使用rbind数据框对象.
a <- NULL
b <- data.frame(A="one", B="lala", C=1)
d <- data.frame(A="two", B="lele", C=2)
a <- rbind(a, b)
a <- rbind(a, d)
Run Code Online (Sandbox Code Playgroud)
现在我们可以看到数据框中的列a是正确的类型.
> lapply(a, class)
$A
[1] "factor"
$B
[1] "factor"
$C
[1] "numeric"
>
Run Code Online (Sandbox Code Playgroud)
请注意,您必须在创建不同数据框时命名列,否则rbind将失败.如果你这样做
b <- data.frame("one", "lala", 1)
d <- data.frame("two", "lele", 2)
Run Code Online (Sandbox Code Playgroud)
然后
> rbind(b, d)
Error in match.names(clabs, names(xi)) :
names do not match previous names
Run Code Online (Sandbox Code Playgroud)