r - 如何将文本和变量粘贴到 R 中的逻辑表达式中?

标签 r paste

我想将变量粘贴到我用于对数据进行子集化的逻辑表达式中,但是子集函数在粘贴时不会将它们视为列名(无论是使用 ot 还是不使用引号)。

我有一个数据框,其中包含名为 col1、col2 等的列。我想对 colx < 0.05 的行进行子集

这确实有效:

subsetdata<-subset(dataframe, col1<0.05)

subsetdata<-subset(dataframe, col2<0.05)

这不起作用:

for (k in 1:2){
subsetdata<-subset(dataframe, paste("col",k,sep="")<0.05)
}

for (k in 1:2){
subsetdata<-subset(dataframe, noquote(paste("col",k,sep=""))<0.05)
}

我找不到答案;有什么建议吗?

最佳答案

您尝试使用 subset 使这比需要的困难得多.注意 ?subset说第二个参数(也称为子集)必须是一个表达式,而你没有给它一个表达式:

> is.expression(paste("col",1:2,sep="")<0.05)
[1] FALSE

您可以构造一个未计算的表达式,然后在将其传递给 subset 时对其进行计算,但还有更简单的方法。例如:利用 < 的向量化性质运营商。

# sample data
set.seed(21)
dataframe <- data.frame(col1=rnorm(10),col2=rnorm(10),col3=1)

logicalCols <- dataframe[,paste("col",1:2,sep="")] < 0.05
#        col1  col2
#  [1,] FALSE  TRUE
#  [2,] FALSE FALSE
#  [3,] FALSE  TRUE
#  [4,]  TRUE FALSE
#  [5,] FALSE FALSE
#  [6,] FALSE FALSE
#  [7,]  TRUE FALSE
#  [8,]  TRUE FALSE
#  [9,] FALSE  TRUE
# [10,]  TRUE  TRUE
ANY <- apply(logicalCols, 1, any)  # any colx < 0.05
ALL <- apply(logicalCols, 1, all)  # all colx < 0.05
dataframe[ANY,]
dataframe[ALL,]

关于r - 如何将文本和变量粘贴到 R 中的逻辑表达式中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6474922/

相关文章:

r - 计算数据框中点组之间的最小距离

r - 如何从 R 中的向量创建单行数据框?

r - ggplot斜体标题的一部分,并将文本分成两行

r - 用两个分隔符连接矩阵行

android - 如何检测应用程序编辑文本中的粘贴事件?

r - R中na.rm和na.omit的差异

r - 在R中合并很多数据帧

C# 如何将剪贴板中的格式化文本粘贴到 RichTextBox

r - 不能使用粘贴来获取函数内的真实对象

r - 日期和时间