我正在努力让df_all的这个功能自动化。由于示例代码可能是显示内容的最佳方式,因此我的目标是这里有一个简单的重现示例:
# construct datastructure
loop <- 5
df_one <- as.data.frame(matrix(nrow = loop , ncol = 2))
for(i in 1:loop) {
a <- 0+i
b <- 4+i
df_one[i,1] <- a
df_one[i,2] <- b
}
df_one
# V1 V2
# 1 1 5
# 2 2 6
# 3 3 7
# 4 4 8
# 5 5 9
#this creates my goal
df_all <- as.data.frame(matrix(nrow = loop, ncol = loop))
for(i in 1:loop) {
df_all[i,1] <- paste(df_one[i,1], df_one[1,2], sep ="")
df_all[i,2] <- paste(df_one[i,1], df_one[2,2], sep ="")
df_all[i,3] <- paste(df_one[i,1], df_one[3,2], sep ="")
df_all[i,4] <- paste(df_one[i,1], df_one[4,2], sep ="")
df_all[i,5] <- paste(df_one[i,1], df_one[5,2], sep ="")
}
df_all
# V1 V2 V3 V4 V5
# 1 15 16 17 18 19
# 2 25 26 27 28 29
# 3 35 36 37 38 39
# 4 45 46 47 48 49
# 5 55 56 57 58 59我想用另一个循环替换下面第二个循环的复制和粘贴部分,这样我就可以将其用于大型数据帧:
df_all[i,1] <- paste(df_one[i,1], df_one[1,2], sep ="")
df_all[i,2] <- paste(df_one[i,1], df_one[2,2], sep ="")
...我希望有人能帮助我
发布于 2018-07-13 19:16:42
我想outer函数就是你要找的。
此函数的输出是一个矩阵,如果需要,可以将其转换为数据帧
as.data.frame(outer(df_one[,1], df_one[,2], FUN = paste0))
V1 V2 V3 V4 V5
1 15 16 17 18 19
2 25 26 27 28 29
3 35 36 37 38 39
4 45 46 47 48 49
5 55 56 57 58 59发布于 2018-07-13 19:31:24
您可以使用paste0:
matrix(paste0(df_one$V1, rep(df_one$V2, each = loop)), nrow = loop)
[,1] [,2] [,3] [,4] [,5]
[1,] "15" "16" "17" "18" "19"
[2,] "25" "26" "27" "28" "29"
[3,] "35" "36" "37" "38" "39"
[4,] "45" "46" "47" "48" "49"
[5,] "55" "56" "57" "58" "59"https://stackoverflow.com/questions/51323290
复制相似问题