我有一个问题肯定显得非常微不足道,但答案总是让我提到:你如何在for-loop中打印同一行的多个变量的值?
我提出了两个解决方案,它们都不依赖于格式化的print
语句,我仍然感兴趣的是print
本身是否可以用于以所需格式返回输出。
首先我展示for-loop
,其中包含一个解决方案,然后我提出了一个代表另一个解决方案的函数:
P <- 243.51
t <- 31 / 365
n <- 365
for (r in seq(0.15, 0.22, by = 0.01)) {
A <- P * ((1 + (r/ n))^ (n * t))
interest <- A - P
# this prints each variable on a separate line
print (r)
print (interest)
# this does not work
# print c(r, interest)
# this presents both variables on the same line, as desired
output <- c(r,interest)
print(output)
# EDIT - I just realized the line below prints output in the desired format
print (c(r, interest))
}
# this function also returns output in the desired format
data.fn <- function(r) {
interest <- P*(1+(r/ n))^(n*t) - P
list(r = r, interest = interest)
}
my.output <- as.data.frame(data.fn(seq(0.15, 0.22, by = 0.01)))
my.output
# r interest
# 1 0.15 3.121450
# 2 0.16 3.330918
# 3 0.17 3.540558
# 4 0.18 3.750370
# 5 0.19 3.960355
# 6 0.20 4.170512
# 7 0.21 4.380842
# 8 0.22 4.591345
有没有办法在print
中格式化for-loop
语句,以便print
语句本身返回格式为my.output
的输出?我知道我也可以在for循环中放置一个矩阵,用于存储r
和interest
的值,然后在循环结束后打印矩阵。但是,我认为使用print
语句会更容易,尤其是因为我不需要保留r
或interest
的值。
感谢您的任何建议。再次抱歉,这个问题非常简单。我在很长一段时间内搜索了相当多的答案,但从未找到解决方案。也许我已经在这篇文章中提出了足够的解决方案来提供额外的可能解决方案。不过,我仍然感兴趣。
编辑:
除了下面的有用回复,我才意识到使用:
print (c(r, interest))
上面for-loop
中的也有效。
答案 0 :(得分:20)
答案 1 :(得分:3)
作为补充说明,由于R的向量化,不需要for循环。
此:
P <- 243.51
t <- 31 / 365
n <- 365
for (r in seq(0.15, 0.22, by = 0.01))
A <- P * ((1 + (r/ n))^ (n * t))
interest <- A - P
}
相当于:
P <- 243.51
t <- 31 / 365
n <- 365
r <- seq(0.15, 0.22, by = 0.01)
A <- P * ((1 + (r/ n))^ (n * t))
interest <- A - P
因为r
是一个向量,所以包含它的上面的表达式是对向量的所有值执行的。