Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/80.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:rbindstring到factor列_R_Rbind - Fatal编程技术网

R:rbindstring到factor列

R:rbindstring到factor列,r,rbind,R,Rbind,我试图将包含字符串的行绑定到一个不起作用的数据帧。 代码: 结果: > df1 = data.frame(id=1:5, name=c("peter","kate","lisa","daniel","paul")) > df2 = data.frame(id=5:1, age=c(11,24,25,67,2)) > df3 = merge(df1,df2) > df3 = rbind(df3, c(6, "hannah", 30)) Warning message: In

我试图将包含字符串的行绑定到一个不起作用的数据帧。 代码:

结果:

> df1 = data.frame(id=1:5, name=c("peter","kate","lisa","daniel","paul"))
> df2 = data.frame(id=5:1, age=c(11,24,25,67,2))
> df3 = merge(df1,df2)
> df3 = rbind(df3, c(6, "hannah", 30))
Warning message:
In `[<-.factor`(`*tmp*`, ri, value = "hannah") :
  ungültiges Faktorniveau, NA erzeugt
> df3
  id   name age
1  1  peter   2
2  2   kate  67
3  3   lisa  25
4  4 daniel  24
5  5   paul  11
6  6   <NA>  30
> 
> str(df3)
'data.frame':   6 obs. of  3 variables:
 $ id  : chr  "1" "2" "3" "4" ...
 $ name: Factor w/ 5 levels "daniel","kate",..: 5 2 3 1 4 NA
 $ age : chr  "2" "67" "25" "24" ...
df1=data.frame(id=1:5,name=c(“彼得”、“凯特”、“丽莎”、“丹尼尔”、“保罗”)) >df2=数据帧(id=5:1,年龄=c(11,24,25,67,2)) >df3=合并(df1,df2) >df3=rbind(df3,c(6,“hannah”,30)) 警告信息: 在`[df3 身份证姓名年龄 1彼得2 2凯特67 3 3 lisa 25 4但以理24 5保罗11 6 6 30 > >str(df3) “data.frame”:3个变量中的6个对象: $id:chr“1”“2”“3”“4”。。。 $name:Factor w/5级“daniel”、“kate”和….:5 2 3 1 4 NA $age:chr“2”“67”“25”“24”。。。 看起来R将名称列设置为因子列,这就是它不接受字符串值的原因。如何解决此问题?更可取的做法是:将整个列转换为字符串列(如果存在)或将新字符串转换为因子?如何执行此操作


谢谢!

一个好的解决方案是使用dplyr软件包,创建TIBLE而不是数据帧(TIBLE是一种现代类型的数据帧,它将字符变量创建为标准而不是因子)

库(dplyr)

df1使用
stringsAsFactors=FALSE创建
data.frame
,如果您事先不知道潜在值的完整列表,则使用
字符
(字符串)列将比使用
因子
列更容易。正如akrun所说,在
数据框()中使用
stringsAsFactors=FALSE
调用以保留
character
类中的所有字符串列。很酷的
stringsAsFactors=FALSE
可能重复。谢谢!很好,谢谢!是
stringsAsFactors=FALSE
> df1 = data.frame(id=1:5, name=c("peter","kate","lisa","daniel","paul"))
> df2 = data.frame(id=5:1, age=c(11,24,25,67,2))
> df3 = merge(df1,df2)
> df3 = rbind(df3, c(6, "hannah", 30))
Warning message:
In `[<-.factor`(`*tmp*`, ri, value = "hannah") :
  ungültiges Faktorniveau, NA erzeugt
> df3
  id   name age
1  1  peter   2
2  2   kate  67
3  3   lisa  25
4  4 daniel  24
5  5   paul  11
6  6   <NA>  30
> 
> str(df3)
'data.frame':   6 obs. of  3 variables:
 $ id  : chr  "1" "2" "3" "4" ...
 $ name: Factor w/ 5 levels "daniel","kate",..: 5 2 3 1 4 NA
 $ age : chr  "2" "67" "25" "24" ...
library(dplyr)
df1 <- tibble(id=1:5, name=c("peter","kate","lisa","daniel","paul"))
df2 <- tibble(id=5:1, age=c(11,24,25,67,2))
df3 <- left_join(df1,df2) #or merge(df1, df2) as you prefere so
df3 <- rbind(df3, c(6, "hannah", 30))
df3
str(df3)