【发布时间】:2015-11-23 20:27:16
【问题描述】:
早上好, 我有以下问题。 我的 Data.frame “数据”具有以下格式:
Type amount
1 2
2 0
3 3
我想创建一个格式如下的向量:
1
1
3
3
3
这意味着我想转换我的数据。 我创建了一个向量并为我在 R 中的转换编写了以下代码:
向量
for (i in 1:3){
k <- 1
while (k <= data[i,2]){
vector[k] <- data[i,1]
k <- k+1
}
}
问题是,我得到以下结果,但我不知道我错在哪一部分……
3
3
3
0
0
在 R 中解决这个特定问题可能有很多不同的方法,但我很好奇为什么我的解决方案不起作用。我很感谢其他选择,但真的很想知道我的错误是什么。 感谢您的帮助!
【问题讨论】:
-
如果您要使用 for/while 解决方案,您需要为向量保留一个单独的索引,现在您将使用不同的值多次设置
vector[1]。 -
可能是
stack(unlist(apply(data, 1, function(x) rep(x['Type'], x['amount'])))) -
@VeerendraGadekar 只需
with(data, rep(Type, amount))就可以,但我认为 OP 想要使用while/for循环 -
@VeerendraGadekar 也许复制/粘贴
rep的源代码就足够了。 -
带有(data…) 的建议解决方案对我来说非常完美。我仍然只是想知道为什么我最初的尝试不起作用。我确实使用了 vector[k] 的单独索引,或者我在这里出错了。感谢您的所有帮助!
标签: r loops for-loop vector while-loop