在R中循环和填充空向量

时间:2018-03-19 19:28:29

标签: r loops vector

我正在填写这个空载体:

for (numbers in number_vec) {   
  sqrt <- sqrt(numbers)
  empty_vec[numbers] <- sqrt
}

来自此循环的序列号:

numbers_vec

其中c(16:49)empty_vec

但是,当我执行此操作时,.document.getElementById("")中的第一个位置(1-15)未填充?

2 个答案:

答案 0 :(得分:0)

您可以通过两种方式解决此问题:

首先,您可以创建一个计数器,它将记录您所在循环的哪一步,并将其用作import pandas as pd data = [{'id': 'Jones', 'tf': [(0, 0.5), (1,2.0)]}, {'id': 'Alpha', 'tf': [(1,2.0)]}, {'id': 'Blue', 'tf': [(2,0.1),(1,0.2)]}] df = pd.DataFrame(data) df = df.join(pd.DataFrame(columns=[0, 1, 2])) for idx, lst in enumerate(df['tf']): for tup in lst: df.iat[idx, tup[0]+2] = tup[1] df = df.drop('tf', 1).melt('id').dropna(subset=['value']) # id variable value # 0 Jones 0 0.5 # 3 Jones 1 2 # 4 Alpha 1 2 # 5 Blue 1 0.2 # 8 Blue 2 0.1 的索引,如下所示:

empty_vect

或者您可以创建一个空向量并连接每个新值,如下所示:

empty_vec <- rep("", times=length(number_vec))
counter=0
for (numbers in number_vec) {   
counter=counter+1
sqrt<-sqrt(numbers)
empty_vec[counter]<-sqrt
}

你正在做的事情,就像你开始以第16个位置填充你的向量,这就是你有错误的方式。

答案 1 :(得分:0)

首先,您需要了解循环的工作原理

for循环的一般表达是

for(var in seq) expr
    var =  A syntactical name for a variable
    seq =  An expression evaluating to a vector (including a list and an expression) or to a pairlist or NULL. A factor value will be coerced to a character vector.

所以请注意,&#34; seq&#34;将是&#34; var&#34;。

的价值

在你的例子中,你写了

for (numbers in number_vec)
where,
     numbers = Name of the variable
     number_vec = c(16:49)

所以在这里,&#34;数字&#34;的初始值将是&#34; number_vec&#34;的第一个值这是16。

在后面的循环步骤中,表达式

empty_vec[numbers]<-sqrt
where , 
    empty_vec[numbers] indicate the 16th position of the  empty_vec as initially numbers started with value 16

当你从第16个位置开始时,之前的15个位置仍为空。

问题的可能解决方案:

number_vec = c(16:49)
empty_vec <- rep("", times=length(number_vec))

for (numbers in seq_along(number_vec)) {   
  sqrt<-sqrt(number_vec[numbers])
  empty_vec[numbers]<-sqrt
}