得到 (1, 2, 3, 4, 2, 3, 4, 3, 4, 4) from (1, 2, 3, 4) in R

如何解决得到 (1, 2, 3, 4, 2, 3, 4, 3, 4, 4) from (1, 2, 3, 4) in R

我有矢量

z1 <- c(1,2,3,4) 

并想从中得到另一个向量

z2 <- c(1,4,4)

我尝试了 rep() 函数的不同变体,但只得到了这个

z3 <- rep(z1,times=seq(length(z1),1))

z3 <- c(1,1,4)

z2 也可以用 for() 循环来完成

temp <- z1
res <- c()

for (i in 1:length(z1)){
    
    res <- c(res,temp)
    temp <- temp[-1]
    
}

res <- c(1,4)

但是有没有什么方法可以使用一个字符串内置函数(如 rep())将 z1 转换为 z2?

解决方法

你可以像下面这样尝试sapply + unlist + tail

> unlist(sapply(-seq_along(z1),tail,x = c(NA,z1)))
 [1] 1 2 3 4 2 3 4 3 4 4
,

编辑:更新帖子以说明订购的解决方案

通过将每个值重复最大次数来填充矩阵。然后取矩阵的下三角形。注意:在这种情况下使用 length(z1) 以便注意值必须是整数,如果该值有意义,请改用 max(z1)

z2 <- matrix(data = rep(z1,times = length(z1)),ncol = length(z1),byrow = FALSE)
z2

结果矩阵

     [,1] [,2] [,3] [,4]
[1,]    1    1    1    1
[2,]    2    2    2    2
[3,]    3    3    3    3
[4,]    4    4    4    4

使用lower.tri对矩阵进行子集提取下三角和对角线

z2 <- z2[lower.tri(z2,diag = TRUE)]
print(z2)

结果

[1] 1 2 3 4 2 3 4 3 4 4

之前的部分解(对于无序解)

使用lapply遍历向量,每次迭代时,使用rep重复每个元素所需的次数,然后unlist将结果转化为向量

 z1 <- c(1,2,3,4) 
 z2 <- unlist(lapply(z1,function(x) rep(x,times = x)))
 print(z2)

结果

 [1] 1 2 2 3 3 3 4 4 4 4
,
c(z1,unlist(lapply(1:length(z1),function(x) z1[-c(1:x)])))
[1] 1 2 3 4 2 3 4 3 4 4
,

使用 eval 解析的基础 R:

z1 <- c(1,4) 
max_num <- max(z1)
unlist(lapply(paste(z1,max_num,sep = ":"),function(x){
      eval(parse(text=x))
    }
  )
)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?