Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/65.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 - Fatal编程技术网

替换R中的列值

替换R中的列值,r,R,示例df: index name V1 V2 etc 1 x 2 1 2 y 1 2 3 z 3 4 4 w 4 3 我想用特定索引值的名称列中的相关值替换V1和V2列中的值。输出应如下所示: index name V1 V2 etc 1 x y x 2 y

示例df:

index    name    V1    V2   etc
1        x       2     1
2        y       1     2
3        z       3     4
4        w       4     3
我想用特定索引值的名称列中的相关值替换V1和V2列中的值。输出应如下所示:

index    name    V1    V2   etc 
1        x       y     x    
2        y       x     y    
3        z       z     w  
4        w       w     z   
我在循环中尝试了多个merge语句,但不确定如何替换值,而不是创建新列,并且还出现了重复名称错误

V<-2 # number of V columns
names<-c()
for (i in 1:k){names[[i]]<-paste0('V',i)}
lookup_table<-df[,c('index','name'),drop=FALSE] # it's at unique index level

for(col in names){ 
df<- merge(df,lookup_table,by.x=col,by.y="index",all.x = TRUE)
}
V我们能做什么

df[3:4] <- lapply(df[3:4], function(x) df$name[x])
df[3:4]我们可以做

df[3:4] <- lapply(df[3:4], function(x) df$name[x])

df[3:4]不错!我也试过拉普拉,但没有你那么简单。谢谢!即使我不知道他们的顺序或数量,我怎么能使用这个列呢?我知道它们将以V+number开头。@JohnSnow,在这种情况下,你可以做得很好!我也试过拉普拉,但没有你那么简单。谢谢!即使我不知道他们的顺序或数量,我怎么能使用这个列呢?我知道它们将以V+number开头。@JohnSnow,在这种情况下,您可以执行
i1
df <- structure(list(index = 1:4, name = c("x", "y", "z", "w"), V1 = c(2L, 
1L, 3L, 4L), V2 = c(1L, 2L, 4L, 3L)), .Names = c("index", "name", 
"V1", "V2"), class = "data.frame", row.names = c(NA, -4L))