从for循环生成数据帧
在发布这篇文章之前,我想了很多次,这真的很简单,但我找不到一个方法来做到这一点,抱歉,如果这是非常基本的 我试图找到一个简单的命令来输出一个包含2列的数据帧,该数据帧的值由for循环产生,以及该循环中的变量名,下面是我使用的命令从for循环生成数据帧,r,variables,for-loop,save,R,Variables,For Loop,Save,在发布这篇文章之前,我想了很多次,这真的很简单,但我找不到一个方法来做到这一点,抱歉,如果这是非常基本的 我试图找到一个简单的命令来输出一个包含2列的数据帧,该数据帧的值由for循环产生,以及该循环中的变量名,下面是我使用的命令 for (i in 1:length(x)) { k <- i*5 ##### saving the values that comes out of the loop if (exists("v")== "TR
for (i in 1:length(x)) {
k <- i*5
##### saving the values that comes out of the loop
if (exists("v")== "TRUE" ) {
v= append(v,k)
}
if (exists("v")== "FALSE"){
v <- k
}
###### adding the name of the column
n <- names(x[i])
if (exists("m")== "TRUE" ) {
m= append(m,n)
}
if (exists("m")== "FALSE"){
m <- n
}
}
###### I manually put them into a dataframe and bind them
v <- data.frame(v)
m <- data.frame(m)
df <- cbind(v,m)
我知道这是迟钝的,这个命令确实有效!!我相信有更简单的方法来写这个!我只是到目前为止找不到
这里有一个简单的可重复的例子
x矩阵
非常感谢,在我看来,您想要做的只是:
data.frame( v = seq( from = 5 , by = 5 , length.out = length(x) ) , m = names(x) )
# v m
#1 5 MUYC
#2 10 KJIO
#3 15 KLGJ
但我不知道这对你的问题有多普遍。在我看来,你想要做的似乎就是:
data.frame( v = seq( from = 5 , by = 5 , length.out = length(x) ) , m = names(x) )
# v m
#1 5 MUYC
#2 10 KJIO
#3 15 KLGJ
但我不知道这对你的问题有多普遍。请编写你的代码,并在你的帖子中编辑一个实际问题。开始时x、v、m、n是什么?预填充data.frame,然后使用
[行、列]
索引将值填入其中,或者使用*apply
系列中的内容,而不是for
。请修复语法错误。看起来您想要的是cbind.data.frame(v=seq_沿着(names(x))*5,m=names(x))
,这确实有点愚蠢。此外,您没有矩阵
。这是一个data.frame
@Error404这里是下一次的提示-一个需要10条评论和3条编辑才能勉强理解的问题不会吸引很多好的答案。专注于制作一个玩具,说明问题的症结所在,没有不必要的细节使问题更难理解(也就是说,它不必是你的实际代码,而是制作一个简单的例子)。请编写你的代码并在你的帖子中编辑一个实际问题。开始时x、v、m、n是什么?预填充你的数据。frame,然后使用[row,column]
索引向其中填充值,或者使用*apply
系列中的内容而不是for
。请修复语法错误。看起来您想要的是cbind.data.frame(v=seq_沿着(names(x))*5,m=names(x))
,这确实有点愚蠢。此外,您没有矩阵
。这是一个data.frame
@Error404这里是下一次的提示-一个需要10条评论和3条编辑才能勉强理解的问题不会吸引很多好的答案。专注于制作一个玩具,说明问题的症结所在,没有不必要的细节,使问题更难理解(也就是说,它不必是你的实际代码,而是制作一个简单的例子)。谢谢Simon,我可以编辑这个,以适应我的数据。干杯@Error404太棒了!很高兴它能帮上忙。谢谢西蒙,我可以编辑它来适应我的数据。干杯@Error404太棒了!很高兴这有帮助。
data.frame( v = seq( from = 5 , by = 5 , length.out = length(x) ) , m = names(x) )
# v m
#1 5 MUYC
#2 10 KJIO
#3 15 KLGJ