【发布时间】:2015-06-28 03:02:12
【问题描述】:
例如,我从列表 ["A", "B","C"] 循环, 我将运行一个 for 循环 要获得 v
最后,我想得到一个格式为
的数据框"A" v1
"B" v2
"C" v3
如何得到这个输出?谢谢!
【问题讨论】:
-
如果你说列表,它是什么?一个向量,一个带有一列的数据框,还是一个真实的列表?而 v#,它们是其他东西的占位符还是只是文字 v 加一个数字?它们有多少,它们来自哪里?
例如,我从列表 ["A", "B","C"] 循环, 我将运行一个 for 循环 要获得 v
最后,我想得到一个格式为
的数据框"A" v1
"B" v2
"C" v3
如何得到这个输出?谢谢!
【问题讨论】:
我可能误解了请求,但以下是您要查找的内容吗?
input <- c("A", "B", "C")
data.frame(x=input, y=paste0("v", seq_along(input)))
# x y
# 1 A v1
# 2 B v2
# 3 C v3
请注意,您在问题中提到的方法(迭代地构建一行并通过rbind 与现有数据组合)是一个坏主意,因为它需要更多的输入(请注意,我可以在一行)并且还因为它效率低下(您可以在R inferno 的第二个圆圈中阅读更多信息)。
【讨论】:
input <- list("A", "B", "C"); data.frame(x=unlist(input), y=paste0("v", seq_along(input)))。 for 循环说 R 带有 C 口音。
我一直坚持的部分是,我必须从一个空的数据框开始
df <-data.frame()
for (e in mylist){
v <- function(e) #get the value our from e by a function
one_row<- cbind(e, v) #cbind e, and v corresponding to e
new_f <-data.frame(one_row)
output <-rbind(output,new_f)
}
最后,我得到了正确的输出。
【讨论】: