是否可以使用read.table
读取变量和数字出现在同一列中的数据集?下面是一个不起作用的例子,后面是起作用的matrix
:
aa <- 10
bb <- 20
my.data1 <- read.table(text = '
aa 0
0 bb
', header = FALSE, stringsAsFactors = FALSE)
my.data1
# matrix returns desired output
my.data2 <- matrix(c( aa, 0,
0, bb ), nrow = 2, ncol = 2, byrow = TRUE)
my.data2
# [,1] [,2]
# [1,] 10 0
# [2,] 0 20
我的猜测是text
将aa
和bb
转换为文本,但在仍然使用read.table
的情况下可以避免这种情况吗?
str(my.data1)
'data.frame': 2 obs. of 2 variables:
$ V1: chr "aa" "0"
$ V2: chr "0" "bb"
read.table
函数的text
参数不会将输入转换为字符串,而是(单)引号创建字符串文字或字符串常量,正如引号的R文档所解释的那样(在R中执行?Quotes
):
单引号和双引号分隔字符常量。它们可以互换使用,但首选双引号(字符常量使用双引号打印),因此单引号通常仅用于分隔包含双引号的字符常量。
matrix
命令中的aa
和bb
是R中的符号,因为它们没有被引用,解释器将在全局环境中找到它们的值。
因此,要回答您的问题:不,除非您使用类似sprintf
的函数来替换字符串中aa
和bb
的值,否则不可能执行此操作。例如:
my.data1 <- read.table(text = sprintf('
%f 0
0 %f', aa, bb), header = FALSE, stringsAsFactors = FALSE)
但这不是一件很常见的事情!