首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >对于列表中的每个元素,我如何在每个j列中设置相同的最大值?

对于列表中的每个元素,我如何在每个j列中设置相同的最大值?
EN

Stack Overflow用户
提问于 2015-03-09 13:37:06
回答 1查看 773关注 0票数 0

在R中,我有一个i数据帧的列表。对于每个数据帧中的j列,我希望重新编码大于100到100的值。我可以在一个循环中完成这个任务,但是对于如何使用其中一个应用函数来完成这个任务,我感到不知所措。

模拟数据和循环:

代码语言:javascript
运行
复制
a <- data.frame(letters[11:20],floor(runif(10, min = 10, max = 200)),floor(runif(10, min = 10, max = 200)),letters[1:10])
b <- data.frame(letters[11:20],floor(runif(10, min = 10, max = 200)),floor(runif(10, min = 10, max = 200)),letters[15:24])
d <- list(a,b)

for(i in 1:2){
    for(j in 2:3) {
    d[[i]][j] <- ifelse(d[[i]][,j] > 100, 100, d[[i]][,j])
    d}
}

我试着用(和Map)来实现这个功能。

  1. 下面的工作,但将是一个痛苦,因为我需要重新记录许多超过两列。 E <- l应用(d,函数(X){ x,2 <- ifelse(x,2 > 100,100,x,2) x,3 <- ifelse(x,3 > 100,100,x,3) x})
  2. 我试着遵循这里的建议:http://adv-r.had.co.nz/Functionals.html J <- 2:3e <- Map(函数( x,y) { x,y <- ifelse(x,y> 100,100,x,y) x},d,j)

这是不完全正确的,因为在d[1]中的col 3还没有被修改。与d[2]中的col 2相同

  1. 下一次尝试: I <- 1:2j <- 2:3e <- Map(函数(x,y,z) { x[y] <- ifelse(x[y] > 100,100,x[y]) x},d,i,j)

[.default中的错误(x[y],,z):不正确的维数

我不明白为什么我在这里得到一个不正确的尺寸错误。我显然错过了什么,但在我看来:

代码语言:javascript
运行
复制
x[[y]][,z] <- ifelse(x[[y]][,z] > 100, 100, x[[y]][,z])

与以下相同:

代码语言:javascript
运行
复制
x[,y] <- ifelse(x[,y] > 100, 100, x[,y]) 

在前面的代码块中,该代码块没有生成错误。

我想我的问题源于对应用函数族的不完全理解。

任何形式的帮助都将不胜感激。谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-03-09 13:46:52

这似乎实现了你想要的

代码语言:javascript
运行
复制
lapply(d, function(x){x[2:3][x[2:3]>100] <-100;x})
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28943362

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档