Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用r上的循环创建和填充新列_R_Loops_For Loop - Fatal编程技术网

使用r上的循环创建和填充新列

使用r上的循环创建和填充新列,r,loops,for-loop,R,Loops,For Loop,我正在尝试编写一个循环,该循环接受一个表(表x)的一列中的变量,并将这些名称用作另一个表(表y)中的列名,然后根据某些条件填充这些列。这是我的密码。我一直在尝试使用For循环 for(player in x) { y$paste0(x$player)<-ifelse(y$Playing=="True", 1, 0) } for(x中的玩家) { y$paste0(x$player)只需: # create df1 with 10 random TRUE/FALSE valu

我正在尝试编写一个循环,该循环接受一个表(表x)的一列中的变量,并将这些名称用作另一个表(表y)中的列名,然后根据某些条件填充这些列。这是我的密码。我一直在尝试使用For循环

for(player in x)
  {
  y$paste0(x$player)<-ifelse(y$Playing=="True", 1, 0)
  }
for(x中的玩家)
{
y$paste0(x$player)只需:

#  create df1 with 10 random TRUE/FALSE values
df1 <- data.frame(Player= sample(c(TRUE,FALSE),10,TRUE))

df1$playing <- sapply(df1$Player, function(x) ifelse(x==TRUE,1,0))
那就:

#  create df1 with 10 random TRUE/FALSE values
df1 <- data.frame(Player= sample(c(TRUE,FALSE),10,TRUE))

df1$playing <- sapply(df1$Player, function(x) ifelse(x==TRUE,1,0))

在这种情况下,您不需要粘贴0。就我对您尝试的代码的理解而言,下面的内容可能可以完成这项工作

首先,让我们组成数据帧
x
y

set.seed(1)   # make it reproducible
x <- data.frame(A = 1:5, B = rnorm(5))
y <- data.frame(Playing = sample(c("True","False"), 10, TRUE))

在这种情况下,您不需要粘贴0。就我对您尝试的代码的理解而言,下面的内容可能可以完成这项工作

首先,让我们组成数据帧
x
y

set.seed(1)   # make it reproducible
x <- data.frame(A = 1:5, B = rnorm(5))
y <- data.frame(Playing = sample(c("True","False"), 10, TRUE))

请阅读请阅读我正在寻找一种比c(“TRUE”、“TRUE”、“FALSE”)方法更通用的方法,因为我有35行,需要使用不同的数据多次运行该方法。@SoccarAnalytics26您能解释更多吗?我刚刚选择了“TRUE”“TRUE”“FALSE”以近似我假设的x$player列的样子。此代码适用于任何真/假vector@SoccerAnalytics26我只是改变了我构建
df1
的方式,使其更加清晰。我的player列为每个玩家分配了一个玩家ID。然后有一个单独的列,表示该玩家是否启动,这是一个T/F列。I我希望为每个球员添加一列(以他们的ID作为列名),然后根据他们是否在场上或在板凳上,用0和1填充该列。@SoccerAnalytics26查看我的更新,我想这就是你想要的。我正在寻找一种比c更通用的方式(“真”、“真”、“假”)方法,因为我有35行,并且需要使用不同的数据多次运行该方法。@SoccerAnalytics26您能解释更多吗?我刚刚选择了“TRUE”“TRUE”“FALSE”以近似我假设的x$player列的样子。此代码适用于任何真/假vector@SoccerAnalytics26我只是改变了我构建
df1
的方式,使其更加清晰。我的player列为每个玩家分配了一个玩家ID。然后有一个单独的列,表示该玩家是否启动,这是一个T/F列。I我希望为每个玩家添加一列(以他们的ID作为列名)然后在栏中填入0和1,如果他们在场上或在板凳上。@SoccerAnalytics26看到我的更新,我想这就是你想要的。我想这非常接近。你知道我如何在y表中为每个球员创建一个新栏,因为每个球员都有不同的0和1(用于比赛时间)@SoccerAnalytics26上面的代码确实为
x
的每一列创建了一个新列。我将编辑我的代码以使其更清晰。我认为这非常接近。你知道我如何为y表中的每个玩家创建一个新列,因为每个玩家都有不同的0和1(用于播放时间)@SoccerAnalytics26上面的代码确实为
x
的每一列创建了一个新列。我将编辑我的代码以使其更清晰。
set.seed(1)   # make it reproducible
x <- data.frame(A = 1:5, B = rnorm(5))
y <- data.frame(Playing = sample(c("True","False"), 10, TRUE))
for(player in names(x)) {
    y[[player]] <- ifelse(y$Playing == "True", 1, 0)
}
str(y)
'data.frame':   10 obs. of  3 variables:
 $ Playing: Factor w/ 2 levels "False","True": 2 2 1 2 1 2 1 1 2 1
 $ A      : num  1 1 0 1 0 1 0 0 1 0
 $ B      : num  1 1 0 1 0 1 0 0 1 0