首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rstudio:用循环替换复制和粘贴

Rstudio:用循环替换复制和粘贴
EN

Stack Overflow用户
提问于 2018-07-13 18:41:05
回答 2查看 46关注 0票数 0

我正在努力让df_all的这个功能自动化。由于示例代码可能是显示内容的最佳方式,因此我的目标是这里有一个简单的重现示例:

代码语言:javascript
复制
# 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

我想用另一个循环替换下面第二个循环的复制和粘贴部分,这样我就可以将其用于大型数据帧:

代码语言:javascript
复制
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 ="")
...

我希望有人能帮助我

EN

回答 2

Stack Overflow用户

发布于 2018-07-13 19:16:42

我想outer函数就是你要找的。

此函数的输出是一个矩阵,如果需要,可以将其转换为数据帧

代码语言:javascript
复制
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
票数 2
EN

Stack Overflow用户

发布于 2018-07-13 19:31:24

您可以使用paste0:

代码语言:javascript
复制
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"
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51323290

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档