【问题标题】:How to use sapply to apply function to vector_a[i] returning value from vector_b[i]如何使用 sapply 将函数应用于 vector_a[i] 从 vector_b[i] 返回值
【发布时间】:2013-09-02 06:04:26
【问题描述】:

我想对 dataframe$column1 的每个值应用一个函数,返回一个相同长度的向量。如果条件适用,输出应包含来自 dataframe$column2 (同一行)的值。在(伪)代码中

function <- "If (value of dataframe$column1[i] is something) {return(dataframe$column1[i])} else {return(dataframe$column2[i])}  

output_vector <- sapply(dataframe$column1, function, dataframe$column2)

在应用函数时,sapply 是否记得向量的索引,以便从不同的向量返回一个具有相同索引的值?

【问题讨论】:

  • 考虑提供一个示例数据集和预期的答案。那会帮助我。虽然也许这个问题对其他人来说已经足够清楚了。
  • sapply 不会将索引传递给您的函数。正如 Marius 所指出的,这就是 ifelse 的用途。

标签: r sapply


【解决方案1】:

这正是ifelse() 所做的:

df = data.frame(col1=1:10, col2=21:30)
output_vector = ifelse(df$col1 > 5, df$col1, df$col2)

【讨论】:

  • @CptNemo 如果您真的非常想使用apply 系列函数的成员,您可以像这样嵌入ifelse 语句... ...虽然这样做在本例:df$col3 &lt;- apply(df, 1, function(i) ifelse(i[1] &gt; 5 , i[1], i[2]))
猜你喜欢
  • 2016-03-12
  • 1970-01-01
  • 1970-01-01
  • 2020-08-17
  • 2012-09-02
  • 1970-01-01
  • 2019-10-18
  • 2015-12-13
  • 1970-01-01
相关资源
最近更新 更多