R:通过数据范围计算百分比-创建仓位
我对R中的编码是完全陌生的——事实上,一般情况下都是编码,所以请原谅我的无知 我有一个数据文件,其中包含不同长度特征的“开始”和“结束”位置值。我想输出一个文件,为每个特征(数据行)创建一个容器,该容器按特征长度的百分比(1-100%)排列 我认为这基本上回答了这个问题,但我仍然有一些问题: 有没有关于如何解决这个问题的建议 更新: 作为上述数据集第一行的示例:R:通过数据范围计算百分比-创建仓位,r,function,bin,seq,R,Function,Bin,Seq,我对R中的编码是完全陌生的——事实上,一般情况下都是编码,所以请原谅我的无知 我有一个数据文件,其中包含不同长度特征的“开始”和“结束”位置值。我想输出一个文件,为每个特征(数据行)创建一个容器,该容器按特征长度的百分比(1-100%)排列 我认为这基本上回答了这个问题,但我仍然有一些问题: 有没有关于如何解决这个问题的建议 更新: 作为上述数据集第一行的示例: START=7529,END=9484,bin=10(简化),range=1955,jump=195.5 预期的产出将是:
START=7529,END=9484,bin=10(简化),range=1955,jump=195.5
预期的产出将是:
v1 v2
[1] 7529.0 7724.5
[2] 7724.5 7920.0
[3] 7920.0 8115.5
...
[9] 9093 9288.5
[10] 9288.5 9484
该错误意味着您向
seq
提供了一个向量作为第一个参数(也是第二个参数),而不是一个数字。尝试使用bin_it(功能[1,2],功能[1,3],100)
它应该可以正常工作。现在要解决这个问题,可以做一个循环(坏)
或者(更好)使用apply族。在您的情况下,类似这样的事情应该可以做到:
output = apply(feature[,2:3], 1, function(x) bin_it(START = x[,1], END = x[,2], BINS = 100))
您想要的输出是什么?我刚刚发现一个更好的方法可能是
mapply(binu it,feature[,2],feature[,3],100)
太好了,非常感谢!这对我来说是有效的,因为它将函数应用于我的数据行。然而,我得到了一种不同类型的错误:data.frame(v1,v2)中的错误:参数意味着不同的行数:99101
现在我只需要找到定义v1和v2时缺少的内容。
bin_it <- function(START, END, BINS) {
range <- START-END
jump <- range/BINS
v1 <- c(START, seq(START+jump, END, jump))
v2 <- seq(START+jump, END, jump)
data.frame(v1, v2)
}
bin_it(feature[,2], feature[,3], 100)
Error in seq.default(START + jump + 1, END, jump) :
'from' must be of length 1
v1 v2
[1] 7529.0 7724.5
[2] 7724.5 7920.0
[3] 7920.0 8115.5
...
[9] 9093 9288.5
[10] 9288.5 9484
output = c()
for(l in 1:dim(feature)[1]){
output = c(output, bin_it(feature[l,2], feature[l,3], 100))
}
output = apply(feature[,2:3], 1, function(x) bin_it(START = x[,1], END = x[,2], BINS = 100))