R 试图复制数据帧中的行?

R 试图复制数据帧中的行?,r,dataframe,rep,R,Dataframe,Rep,我在提示符下发出了以下命令 v id a b c d 1 1 1 Adam Smith 10 2 2 2 John Bond 15 3 3 3 Sam Ted 20 但我实际上得到的是: > v1 id a b c d 1 1 1 Adam Smith 10 2 2 2 John Bond 15 3 3 3 Sam Ted 20 4 4 5 Deb Jones 25 5 4 5 Deb Jones 25 6

我在提示符下发出了以下命令

v

  id a    b     c  d
1  1 1 Adam Smith 10
2  2 2 John  Bond 15
3  3 3  Sam   Ted 20
但我实际上得到的是:

> v1

  id a    b     c  d
1  1 1 Adam Smith 10
2  2 2 John  Bond 15
3  3 3  Sam   Ted 20
4  4 5  Deb Jones 25
5  4 5  Deb Jones 25
6  4 5  Deb Jones 25
7  4 5  Deb Jones 25
8  4 5  Deb Jones 25
为什么第45行Deb Jones 25在v1中只出现一次,而不是5次

我是新手。所以请用简单的英语解释。谢谢你的帮助

谢谢,rep不是这样工作的-它只是将输出连接到一个向量中,看起来像是一行rbind。然后,rbind修剪其输入以匹配最短长度行

相反,您可以在适当长度为5的向量上使用lappy,并每次返回该行。行列表rep不是这样工作的-它只是将输出连接成一个向量,看起来像是要rbind的一行。然后,rbind修剪其输入以匹配最短长度行


相反,您可以在适当长度为5的向量上使用lappy,并每次返回该行。listofrows您也可以只传递一个list对象来填充v中所需的行


您也可以只传递一个list对象来填充v中所需的行


rep在一行中创建一个包含45个Deb Jones 25的5个副本的向量rep在一行中创建一个包含45个Deb Jones 25的5个副本的向量请注意,这会将所有内容强制为字符,然后是因子-例如-查看c4,5,Deb,Jones,25的结果-类似于setNamesdata。framelist4,5,Deb,Jones,25,namesv[rep1,5,]可能是一种转换,以确保数字数据保持数字。您可以通过在答案中将c替换为list来避免这种情况,但data.frame具有list列。。。哦,但是使用unlist可以解决这个问题。谢谢。我编辑了答案请注意,这会强制所有内容使用字符,然后使用一个因子-例如-查看c4,5,Deb,Jones,25的结果-类似于setNamesdata。framelist4,5,Deb,Jones,25,namesv[rep1,5,]可能是一种翻译,以确保数字数据保持数字。您可以通过在答案中用list替换c来避免这种情况,但是data.frame有列表列。。。哦,但是使用unlist可以解决这个问题。谢谢。我编辑了答案
> v1

  id a    b     c  d
1  1 1 Adam Smith 10
2  2 2 John  Bond 15
3  3 3  Sam   Ted 20
4  4 5  Deb Jones 25
5  4 5  Deb Jones 25
6  4 5  Deb Jones 25
7  4 5  Deb Jones 25
8  4 5  Deb Jones 25
> v1

  id a    b     c  d
1  1 1 Adam Smith 10
2  2 2 John  Bond 15
3  3 3  Sam   Ted 20
4  4 5  Deb Jones 25
  X1 X2  X3    X4 X5
1  4  5 Deb Jones 25
2  4  5 Deb Jones 25
3  4  5 Deb Jones 25
4  4  5 Deb Jones 25
5  4  5 Deb Jones 25
df <-lapply(df_tmp, unlist)
str(df)

 List of 5
 $ X1: num [1:5] 4 4 4 4 4
 $ X2: num [1:5] 5 5 5 5 5
 $ X3: chr [1:5] "Deb" "Deb" "Deb" "Deb" ...
 $ X4: chr [1:5] "Jones" "Jones" "Jones" "Jones" ...
 $ X5: num [1:5] 25 25 25 25 25
v[4:8,] <- list(4,5,"Deb","Jones",25)
# or without knowing the number of rows:
v[(nrow(v)+1):(nrow(v)+5),] <- list(4,5,"Deb","Jones",25)

#  id a    b     c  d
#1  1 1 Adam Smith 10
#2  2 2 John  Bond 15
#3  3 3  Sam   Ted 20
#4  4 5  Deb Jones 25
#5  4 5  Deb Jones 25
#6  4 5  Deb Jones 25
#7  4 5  Deb Jones 25
#8  4 5  Deb Jones 25
v <- data.frame(id=1:3, a=1:3, b=c("Adam","John","Sam"),
     c=c("Smith","Bond","Ted"), d=c(10,15,20), stringsAsFactors=FALSE)