我需要构造一组变量,其中变量应基于2部分构造:a)name b)一个用value[1]加强的数字。对于不断增加的数字,我使用了for循环。我设法创建了一个字符串,参见test1,但没有增加变量名称,参见test2。
鉴于下面提供的错误代码,我假设R不希望我使用变量名中的“paste0”来构造某些东西。
我的R代码:
numbers_for_variable_name <- c(1,2,3)
# Test-1 [works]
# Construct string with increasing number.
for (i in numbers_for_variable_name) {
cat(paste0("number-", i, "\n"))
}
# Test-2 [does not work]
# Construct variable name with increasing number.
for (i in numbers_for_variable_name) {
paste0("number-", i) <- "p1"
}
“测试1”的结果:
number-1
number-2
number-3
我得到的test2错误是:
Error in paste0("number-", i) <- "p1" :
target of assignment expands to non-language object
“test2”的预期结果是:
number-1 <- "p1"
number-2 <- "p1"
number-3 <- "p1"
要使OP的代码起作用,应该是assign
,为值分配一个标识符
for (i in numbers_for_variable_name) {
assign(paste0("number-", i), "p1")
}
请注意,带有-
的标识符不是标准的,但_
是可以的。因此,如果我们想获取值,请使用反引号
`number-1`
#[1] "p1"
`number-2`
#[1] "p1"
但是,不建议在全局环境中有多个对象。
您应该使用随R-a列表一起提供的结构。您可以使用lApplication
或lApplication
(或只是循环)为其命名、轻松子集或应用函数。
numbers_for_variable_name <- c(1,2,3)
myresult <- vector("list", length = length(numbers_for_variable_name))
names(myresult) <- paste("number-", numbers_for_variable_name, sep = "")
for (i in numbers_for_variable_name) {
myresult[[i]] <- i
}
> myresult
$`number-1`
[1] 1
$`number-2`
[1] 2
$`number-3`
[1] 3
子集:
> myresult[["number-3"]]
[1] 3
将函数应用于所有列表元素:
> lapply(myresult, FUN = function(x) x^2)
$`number-1`
[1] 1
$`number-2`
[1] 4
$`number-3`
[1] 9
在循环中,我是否可以对循环使用相同的计数器变量? 或者这些变量会相互影响吗?以下代码应该为第二个循环使用不同的变量,例如,还是可以?
在我的程序中,我发现当为时,循环无法正确退出。它看起来像整数溢出,远远大于10,循环不会停止。请告诉我发生了什么,以及如何在大型项目中避免这个错误。 代码链接
和C语言不同的的是 和if一样,条件表达式的值必须是布尔类型 和if一样,不需要编写圆括号 和if一样,左大括号必须和表达式在同一行 格式: for 初始化表达式;循环条件表达式;循环后的操作表达式 { 循环体语句; } package main import "fmt" func main() { for i:=0; i<10; i++{ fmt.Println(i
问题内容: 知道为什么for循环初始化程序中的此struct表达式在编译时会导致语法错误吗?在这种情况下,指向struct的指针工作正常,但是我需要像波纹管这样的局部变量。感谢您的建议! 问题答案: 简化您的代码: 给出编译时错误: 预期的布尔值或范围表达式,找到简单的语句(缺少复合文字周围的括号?)(以及另外1个错误) 该构造难以解析。不管是复合文字的一部分还是语句本身( 块)的开头括号,开头括
问题内容: 因此,我正在尝试做某事,不确定是否可能。我有以下代码: 我想做的是为{0..5}的每个实例分配一个唯一的变量,因此为每个变量名指定group1 group2 group3 group4。然后,我将./user0更改为./user$i并根据我的序列创建动态变量列表。这可能吗?尝试执行此操作时出现以下错误,但我不确定bash不喜欢自己实际执行了什么操作。 test.sh:第16行:grou
我的代码是: 这似乎不会在我的变量列表中循环。有什么想法吗?提前致谢