main.Person{Name:"joe", StreetAddress:"123 Anywhere Anytown", Output:"Hello World", Status:1, EmailAddress:"joe@me.com"}
你好,
对不起我的转储问题,但我是R的新手,这实际上是我第一次尝试编码。
我使用indizes x和y创建了一个for循环,我希望将输出值(z)与data.frame中相应的x和y值一起保存。 发布的代码显然是错误的,但我没有得到它。
data.frame应如下所示:
x <- 1
y <- 1
for (y in 1:2){
for (x in 1:2){
z <- x+y
zresults <- data.frame(x, y, z)
}
}
提前多谢你们! 来自德国的问候
答案 0 :(得分:4)
这是做你想做的事情的一种方式:
zresults <- expand.grid(x=1:2,y=1:2);
zresults$z <- zresults$x + zresults$y;
zresults;
## x y z
## 1 1 1 2
## 2 2 1 3
## 3 1 2 3
## 4 2 2 4
您尝试的注意事项:
x
和y
的初始分配。在每个相应循环的第一次迭代中用RHS向量的第一个值(在每种情况下为1
)覆盖这些值。另外值得注意的是,与C / C ++和Java等语言不同,在R中你不必声明变量;任何变量名都可以随时赋值。zresults
。在第一次迭代之后,您覆盖 zresults
之前存在的值。如果你想&#34;积累&#34;一个data.frame一次一行,您可以使用以下解决方案,但请注意这些方法的性能不太理想:zresults[nrow(zresults)+1L,] <- c(x,y,z);
或
zresults <- rbind(zresults,c(x,y,z));
另请注意,必须在构建循环之前首先初始化zresults
;例如:
zresults <- data.frame(x=integer(),y=integer(),z=integer());
答案 1 :(得分:1)
这是另一种解决方案
x = 1
y = 1
result = NULL
for (y in 1:2) {
for (x in 1:2) {
z = x + y
if (is.null(result)) {
result = data.frame(x,y,z)
} else {
result = rbind(result, data.frame(x,y,z))
}
}
}
result