我正在使用一个包含许多data.frames的data.frame。我试图在循环内访问这些sub-data.frames。在这些循环中,子数据帧的名称包含在字符串变量中。由于这是一个字符串,因此我可以使用[,]表示法从这些sub-data.frames中提取数据。例如X <- "sub.df"
,然后df[42,X]
将输出与df$sub.df[42]
相同的内容。
我正在尝试创建一个单行data.frame来替换sub-data.frames中的一行。 (我反复这样做,这就是为什么我的sub-data.frame名称位于字符串中的原因)。但是,我在将此新数据插入这些sub-data.frames时遇到麻烦。这是MWE:
#Set up the data.frames and sub-data.frames
sub.frame <- data.frame(X=1:10,Y=11:20)
df <- data.frame(A=21:30)
df$Z <- sub.frame
Col.Var <- "Z"
#Create a row to insert
new.data.frame <- data.frame(X=40,Y=50)
#This works:
df$Z[3,] <- new.data.frame
#These don't (even though both sides of the assignment give the correct values/dimensions):
df[,Col.Var][6,] <- new.data.frame #Gives Warning and collapses df$Z to 1 dimension
df[7,Col.Var] <- new.data.frame #Gives Warning and only uses first value in both places
#This works, but is a work-around and feels very inelegant(!)
eval(parse(text=paste0("df$",Col.Var,"[8,] <- new.data.frame")))
有没有更好的方法来进行这种插入?鉴于我在R方面的经验,我感觉这样应该很容易,但是我不太清楚。
答案 0 :(得分:0)
您可以不使用sub-data.frames:)
#Set up the data.frames and sub-data.frames
sub.frame <- data.frame(X=1:10,Y=11:20)
df <- data.frame(A=21:30, sub.frame)
#Create a row to insert
new.data.frame <- data.frame(X=40,Y=50)
# This works, too!
df[6,colnames(sub.frame)] <- new.data.frame
> df
A X Y
1 21 1 11
2 22 2 12
3 23 3 13
4 24 4 14
5 25 5 15
6 26 40 50
7 27 7 17
8 28 8 18
9 29 9 19
10 30 10 20