【发布时间】:2020-06-23 06:03:55
【问题描述】:
用户,
在Insert row/s of NAs on the Nth row to list of data.frames with N from list 中,我收到了有关循环使用和地图功能的帮助。在我在那里获得帮助之后,我目前正在尝试解决类似的问题 - 但我再次陷入困境(在 SO 和其他地方花费时间搜索之后)
这里有一些示例数据来说明我的问题:
df_z_one <- data.frame(1:2,4:5,7:8)
df_z_two <- data.frame(10:11,13:14,16:17)
list_z <- list(df_z_one,df_z_two)
df_x_one <- data.frame(c(NA,1,NA),c(NA,2,NA),c(NA,3,NA))
df_x_two <- data.frame(c(2,NA,NA),c(3,NA,NA),c(4,NA,NA))
list_x <- list(df_x_one,df_x_two)
position <- list(c(1,3),c(2,3))
我需要的是一个函数,它用来自list_z 的行替换list_x 的数据帧中的行,position 在list_x 的dfs 中指定行号。我尝试了以下功能:
Map(function(x,y,z){for(i in y){x[i,]<-z[i,]};x},x=list_x,y=position,z=list_z)
此函数仅更改第 n 行上 list_x 的每个 df 中的第一个行号(由 position 指定)。我希望它更改position 指定的所有行。另一种选择是,由于list_z 和list_x 中的行顺序相同(list_z 中的第一行 dfs 转到list_x 中的第一行 dfs,依此类推),这将是一个函数用来自list_x 的行替换list_x 中的NA 行。这样的功能会使positionunnecessary。
我必须提到,要替换的行数会因数据帧而异。
最好的祝愿/约翰
【问题讨论】:
-
你能显示你的预期输出吗?
标签: r